【发布时间】:2016-05-01 03:31:22
【问题描述】:
我想为我正在尝试制作的“游戏”创建一个作为“自定义小部件”模板的类。问题是,只有当我调用类时,我才能让它工作,我指定了将所有东西放在一起的 Frame 对象。整个下午都在找,找不到具体的答案……
下面的代码有效,但我必须使用StatusButton().frame.grid() 而不是只需要写StatusButton().frame.grid()
from tkinter import *
from tkinter.ttk import Progressbar
class StatusButton(Frame):
def __init__(self, master):
super(StatusButton, self).__init__()
self.frame = Frame(master, padx = 10, pady = 10, bd= 5, relief = RAISED)
self.label = Label(self.frame, text = "Hunger Bar")
self.pgbar = Progressbar(self.frame)
self.button = Button(self.frame, text = "Eat")
self.label.pack()
self.pgbar.pack()
self.button.pack(pady = 5, ipadx = 15)
return
root = Tk()
buttonslist = [StatusButton(root) for x in range(16)]
for r in range(4):
for c in range(4):
StatusButton(root).frame.grid(row = r, column = c)
root.mainloop()
我猜我没有正确地将框架对象“连接”到类,即使前者在后者内部,因为当前面的代码被执行时,而是使用StatusButton().grid(),TKinter 窗口弹出正常启动,但没有任何内容,就像我在“网格化”一个空的 Frame 对象一样。我该如何解决这个问题,以便在运行 StatusButton().grid() 时出现我的“自定义小部件”?
对不起,如果这是一个菜鸟错误,这是我编程的第一周
【问题讨论】:
标签: python class python-3.x tkinter