【发布时间】:2012-07-23 20:19:15
【问题描述】:
所以我正在创建一个游戏,现在我决定添加一个 GUI。 GUI代码如下:
master = Tk()
master.wm_title("Main Menu")
a = Button.grid(master, text = "DOMINATE!", command = difficulty)
a.grid(row = 0, column = 0)
a.pack()
mainloop()
b = Button.grid(master, text = "Patch Notes", command = changelog)
b.grid(row = 0, column = 1)
b.pack()
mainloop()
c = Button.grid(master, text = "Credits", command = credit)
c.grid(row = 1, column = 0)
c.pack()
mainloop()
d = Button.grid(master, text = "Rules", command = rules)
d.grid(row = 1, column = 1)
d.pack()
mainloop()
e = Button.grid(master, text = "Quit", command = exit)
e.grid(row = 2, column = 0)
e.pack()
mainloop()
我已经从 Tkinter 导入了函数 *,这只是我 1200 行代码中的一个 sn-p。当我尝试运行它时,我得到了这个错误:
TypeError: unbound 方法 grid_configure() 必须以 Button 实例作为第一个参数调用(取而代之的是 Tk 实例)
(Python 对我来说是一种新语言,很抱歉遗漏了任何明显或愚蠢的东西。我也是编程新手)。
【问题讨论】:
-
一目了然,尝试用
Button(替换所有Button.grid(实例 -
作为一般经验法则。如果您发现自己重复了 3 次或更多次类似的行,请使用循环。
-
@JoelCornett -- 这将是一个有点笨拙的循环(必须在每次迭代中更改
text、command、row和column)。并不是说不可能,但我不确定它是否会使代码更清晰...... -
@mgilson:也许你是对的。对不起。对重复代码的下意识反应。我正在考虑使用函数的字典来替换一系列类似的 if..elifs。在这种情况下,您可以将按钮数据存储在数据结构中,并遍历数据结构以创建按钮。
-
mainloop被设计为只被调用一次。我无法想象您的代码如何以您在问题中的方式运行。
标签: python user-interface button tkinter