【发布时间】:2018-04-19 02:26:21
【问题描述】:
我一直在尝试调用需要两个参数的函数 showframe。当我从主页中的按钮命令调用它时,它显示一个错误。 TypeError:showframe() 缺少 1 个必需的位置参数:'frame_name'。我不明白为什么?正如我通过类名调用的那样,它应该自动获取自我,然后 frame_name 将获取 SignIn 类。但那没有发生。
class Culpture(Frame):
def __init__(self, root):
Frame.__init__(self, root)
fhome = HomePage(root)
fsignin = SignIn(root)
self.showframe(fhome)
fhome.grid(row=0, column=0, sticky='nsew')
fsignin.grid(row=0, column=0, sticky='nsew')
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
def showframe(self, frame_name):
frame_name.tkraise()
class HomePage(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
Label(self, text="Homepage").grid()
Button(self, text='SignIn', command=lambda: Culpture.showframe(SignIn), width=20).grid()
如果我这样做,
Button(self, text='SignIn', command=lambda: Culpture.showframe(parent, SignIn), width=20).grid()
然后它显示另一条错误消息。TypeError: tkraise() missing 1 required positional argument: 'self' 所以我试着看一些我得到的问题是接近我的解决方案Python/Tkinter Event Argument Issue
,但不一样。如果我尝试另一种方式
Button(self, text='SignIn', command=lambda: Culpture.showframe(parent, SignIn(parent)), width=20).grid() 然后它没有显示错误但按钮没有打开新框架。
class SignIn(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
Label(self, text="SignIn").grid()
Button(self, text='Submit', width=20).grid()
所以如果你们中的任何人能帮助我,那将是非常有帮助的。
【问题讨论】:
-
什么是
SignIn? -
不会出错,也不会打开登录框。
标签: python python-3.x tkinter