gpt4 book ai didi

python - 位置参数错误: Classes and Tkinter

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:12 25 4
gpt4 key购买 nike

所以我正在测试 Tkinter 程序的一些代码,并希望有一个主菜单,然后是游戏本身。

我想将主菜单放在 __init__() 函数中,然后当按下按钮时,它会调用命令来删除主菜单并加载新的小部件。为了测试,我只包含了 2 个按钮作为我的小部件,只是为了发挥这个想法。但它出现了一个错误:

from tkinter import *
from tkinter import ttk

class Application:
def __init__(self, master):
But = ttk.Button(master, text = "Play", command = self.Play).pack()

def Play(self, master):
self.But.destroy()
ttk.Button(master, text = "Test Button").pack()



def main():

root = Tk()
Menu = Application(root)
root.resizable(width=False, height=False)
root.mainloop()

if __name__ == "__main__": main()

当点击“播放”按钮时,出现此错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "D:\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
TypeError: Play() missing 1 required positional argument: 'master'

我对使用类进行 tkinter 编程还很陌生。任何帮助都会很棒。

最佳答案

您收到该错误是因为当您定义 Play() 函数(在 def Play(self, master) 中)时,您指定了一个名为 的位置参数master 这是强制性的,但当您使用相同的函数作为 ttk.Button 小部件的回调时,您忽略了它。这意味着您应该这样编码:lambda:self.Play(master)

一旦你这样做了,Python解释器就会通知你你在程序的其他地方犯了其他错误。因此,让我按照 PEP8 为您的程序提供最终解决方案:

import tkinter as tk
from tkinter import ttk


class Application:

def __init__(self, master):
self.master = master
self.button = ttk.Button(self.master, text = "play", command = self.play)
self.button.pack()

def play(self):
self.button.destroy()
self.new_button = ttk.Button(self.master, text = "Test Button")
self.new_button.pack()


def main():
root = tk.Tk()
Menu = Application(root)
root.resizable(width=False, height=False)
root.mainloop()


if __name__ == "__main__":
main()

关于python - 位置参数错误: Classes and Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com