在下面的代码中,app是mainWindow的一个实例,它继承自Tkinter.Frame。我试图使用Frame.Configure方法来更改Frame的背景颜色。但是,调用self.configure(background =“yellow”)不起作用。有人能帮我理解我犯的错误吗?
import Tkinter
class mainWindow(Tkinter.Frame):
def __init__(self, parent):
Tkinter.Frame.__init__(self, master=parent)
self.parent=parent
self.button1=Tkinter.Button(master=self.parent, text='ONE', command=self.change)
self.button1.pack()
self.pack()
def change(self):
self.parent.wm_title("Changed")
self.configure(background="yellow")
root = Tkinter.Tk()
root.geometry("600x600+50+50")
app=mainWindow(root)
root.mainloop()
答案 0 :(得分:2)
它不起作用,因为你的Frame是"微小的"。它不包含任何小部件(按钮的父级是顶部窗口,而不是框架)。因此,要使框架变大,因此可见,您需要扩展它:
import Tkinter
class mainWindow(Tkinter.Frame):
def __init__(self, parent):
Tkinter.Frame.__init__(self, master=parent)
self.parent=parent
self.button1=Tkinter.Button(master=self.parent,
text='ONE',
command=self.change)
self.button1.pack()
self.pack(fill=Tkinter.BOTH, expand=1) #<--- expand frame
def change(self):
self.parent.wm_title("Changed")
self.configure(background="yellow")
root = Tkinter.Tk()
root.geometry("600x600+50+50")
app=mainWindow(root)
root.mainloop()
答案 1 :(得分:1)
尝试self.parent.configure(background="yellow")
我是Tkinter
的新手(几分钟新),所以我根据你的代码猜测框架根本没有显示。框架的父级是root
,它也是按钮的父级。
所以在这里,我正在改变root(顶级小部件)背景
编辑:
根据我上面的推理和Marcin的回答,我推断出框架只是没有尺寸。所以这里是代码的编辑版本,扩展了框架,框架将包含按钮。
import Tkinter
class mainWindow(Tkinter.Frame):
def __init__(self, parent):
Tkinter.Frame.__init__(self, master=parent)
self.parent=parent
self.button1=Tkinter.Button(master=self, text='ONE', command=self.change)
self.button1.pack()
self.pack(fill=Tkinter.BOTH, expand=True)
def change(self):
self.parent.wm_title("Changed")
self.configure(background="yellow")
root = Tkinter.Tk()
root.geometry("600x600+50+50")
app=mainWindow(root)
root.mainloop()