有没有更好的方法来实现这样的代码而不使用全局参数? 我被告知全局参数在python中通常不是一件好事。 你们有什么感想?你认为全球参数还可以吗?
这是代码
import Tkinter as tk
def main():
global root
root = tk.Tk() # parent window
message = tk.Label(root, text = "Hello World")
message.pack()
buttton = tk.Button(root, text="exit", command = buttonPushed)
button.pack()
tk.mainloop()
def buttonPushed():
global root
root.destroy()
main()
在我创建按钮的行上,如果我写了这样的东西;
buttton = tk.Button(root, text="exit", command = buttonPushed(root))
button.pack()
def buttonPushed(root):
root.destroy()
程序无法按要求运行。
有什么建议吗?
答案 0 :(得分:3)
您的buttonPushed
功能是不必要的,因为您可以直接将按钮的command
参数分配给root.destroy
功能:
button = tk.Button(root, text="exit", command=root.destroy)
因此,您的代码只是 1 :
import Tkinter as tk
def main():
root = tk.Tk()
message = tk.Label(root, text="Hello World")
message.pack()
button = tk.Button(root, text="exit", command=root.destroy)
button.pack()
tk.mainloop()
main()
1 注意:我还删除了global root
顶部的main
行,因为这是不必要的。
答案 1 :(得分:3)
您可以使用classes来编写它,但正如iCodez所说,现在这个按钮是不必要的。
import Tkinter as tk
class interface(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
self.root = root
message = tk.Label(self.root, text = "Hello World")
button = tk.Button(self.root, text="exit", command = self.buttonPushed)
message.pack()
button.pack()
def buttonPushed(self):
self.root.destroy()
root = tk.Tk()
inter = interface(root)
root.mainloop()