我有一个问题,这个图形用户界面登录我试图使。代码如下:
from tkinter import *
class OneBiggerWindow():
def __init__(self, master):
self.master = master
master.label_usr = Label(text = 'Enter Username')
master.label_usr.pack()
master.entry_usr = Entry(master)
master.entry_usr.pack()
master.label_pswrd = Label(text = 'Enter Password')
master.label_pswrd.pack()
master.entry_pswrd = Entry(master)
master.entry_pswrd.pack(padx = 15)
master.submit = Button(text = 'Submit', command = self.Pswrd_Chkr)
master.submit.pack(pady = 10)
def Pswrd_Chkr(self, master):
username = master.entry_pswrd.get()
password = master.entry_usr.get()
if username == 'BigBoy' and password == 55595:
print('You got it')
else:
print('Boohoo, you are incorrect')
root = Tk()
GuiBoi = OneBiggerWindow(root)
root.mainloop()
因此,小窗口打开,我输入用户名和密码,我得到这个错误:
File "C:\Users\MyName\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
TypeError: Pswrd_Chkr() missing 1 required positional argument: 'master'
我不知道怎么解决这个问题。任何帮助都将不胜感激!非常感谢,节日快乐!你知道吗
既然您使用OOP作为开发用户界面的范例,那么您应该充分利用它提供的所有好处。然而,有些东西告诉我你不太熟悉类、对象、实例变量和其他面向对象的概念。你知道吗
我建议您将类设计为实际继承自
tkinter.Tk
,因为用户界面部分(widgets)的状态和行为被分组到单独的对象中是有意义的,这些对象依次位于单独的名称空间中。除此之外,我还建议您去掉
from tkinter import *
,因为您不知道导入什么名称。它可以替换先前导入的名称,并且很难看到程序中的名称应该来自何处。改用import tkinter as tk
,这是Python中的一种习惯用法。您可能想阅读PEP8在谈到naming conventions、spaces around keyword arguments时所说的话,其余的都是关于Python编码风格指南的内容:
代码中还有其他小问题—例如,在两种不同的数据类型之间执行对象相等性检查、小的拼写错误等。
在任何情况下,以下是我的观点,你可以稍微重写上面的代码:
当您克服上述问题时,有几个快速的建议:您可以通过提供一个按钮来稍微改善用户体验,以便在输入用户的凭据后清除输入框,或者更好的是,使其自动清除这两个字段。此外,密码字段可以隐藏您实际键入的字符。你知道吗
一个长期明智的建议:你需要跟上你的OOP!:)
相关问题 更多 >
编程相关推荐