首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:无法对“_tkinter.tkapp”对象进行筛选

TypeError:无法对“_tkinter.tkapp”对象进行筛选
EN

Stack Overflow用户
提问于 2022-09-03 19:46:55
回答 1查看 249关注 0票数 0

我正在尝试创建一个项目,它可以使用用户名和密码,并将其保存到.yaml文件中。不幸的是,当我试图保存细节时,我会收到上面的Type错误。我已经尝试过搜索来修复它,但是我没有找到任何我能够成功地应用的解决方案。如果有人能建议我如何解决这个问题,我会非常感激的!代码如下:

代码语言:javascript
复制
import yaml
import tkinter as tk
from tkinter import CENTER, ttk

with open("settings.yaml","rb") as f:
  yaml_dict = yaml.load(f,yaml.CLoader)

class Window(tk.Tk):
    def __init__(self,row,h,w):
        super().__init__()
        self.title("Title")

        #Window configuration
        self.window_width = h #600 default
        self.window_height = w #200 default
        screen_width = self.winfo_screenwidth()
        screen_height = self.winfo_screenheight()
        center_x = int(screen_width/2 - self.window_width/2)
        center_y = int(screen_height/2 - self.window_height/2)

        self.geometry(f'{self.window_width}x{self.window_height}+{center_x}+{center_y}')
        self.resizable(False,False)
        #Grid configuration
        self.columnconfigure(0,weight=1)
        self.columnconfigure(1,weight=2)
        self.columnconfigure(2,weight=2)
        self.columnconfigure(3,weight=2)
        self.columnconfigure(4,weight=1)

        for _ in range(row):
            self.rowconfigure(row,weight=1)
            
    def close(self):
        self.destroy()

def saveCfg(self,name,password):            #issue
    yaml_dict['name'] = name
    yaml_dict['password'] = password
    with open('settings.yaml', 'w') as f:
        yaml.dump(yaml_dict,f)
    self.close()

def userConfig():
    cfgWindow = Window(8,300,200)
    cfgWindow.title("Bot Configuration")
    nameLabel = ttk.Label(cfgWindow, text=("Enter name below:"), font='TkFixedFont')
    nameLabel.grid(column=2,row=1)
    name = ttk.Entry(cfgWindow)
    name.grid(column=2,row=2)
    passwordLabel = ttk.Label(cfgWindow, text=("Enter password below:"), font='TkFixedFont')
    passwordLabel.grid(column=2,row=3)
    password = ttk.Entry(cfgWindow)
    password.grid(column=2,row=4)
    confirmButton = ttk.Button(cfgWindow, text="Save Details", command=lambda: saveCfg(cfgWindow,name,password))
    confirmButton.grid(column=2,row=5)
    cfgWindow.mainloop()

userConfig()

YAML档案:

代码语言:javascript
复制
---
name: "name"
password: "password"
EN

回答 1

Stack Overflow用户

发布于 2022-09-03 20:06:28

您需要保存上述字段的数据(可能称为“状态”),而不是tkinter对象。

请参阅:

顺便说一句,以明文形式存储密码被认为是一种糟糕的方法,请研究如何正确和安全地存储密码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73595038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档