【发布时间】:2021-10-20 12:37:50
【问题描述】:
我想将我的一个 python tkinter 框架 (ButtonWindow) 放置在我的另一个框架 (MainWindow) 中,这样当我运行应用程序时,ButtonWindow 中的小部件就会出现在 MainWindow 中使用 MainWindow 小部件。
在下面的代码中,来自ButtonWindow 的按钮与MainWindow 标签一起出现,但缺少ButtonWindow 标签。
我查看了Frame inside another frame In python Tkinter 中的答案,并尝试将背景设置为紫色以了解ButtonWindow 的边框实际上在哪里,但我看不到任何紫色?
感谢您的帮助!
import tkinter as tk
class ButtonWindow(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.bd = 5
self.bg = "purple"
self.label = tk.Label(text="Button window", font=12)
for i in range(3):
self.button = ttk.Button(text="button", command= lambda: button_fun())
self.button.pack(side = tk.LEFT)
def button_fun(self):
pass
class MainWindow(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.label = tk.Label(text="Main Window", font=12)
self.label.pack(pady=10,padx=10)
self.button_window = ButtonWindow()
self.button_window.pack()
app = MainWindow()
app.mainloop()
【问题讨论】:
-
您实际上并没有在任何一个框架内放置任何东西。所有widget构造函数的第一个参数是父widget,默认是根窗口。
-
除上述问题外,您从未在
ButtonWindow内部的self.label(“按钮窗口”)上调用任何布局函数。同样self.bd = 5和self.bg = "purple"不改变ButtonWindow的边框宽度和背景颜色。请改用self.config(bd=5, bg="purple")。