Tkinter根窗口类继承,在__init__中添加小部件



我从 Tkinter 开始,尝试制作一个简单的根窗口,在窗口的上侧有一个水平按钮栏,在窗口的其余部分有一个条目列表。

在逐步调试此时,我发现此行:

_button_widget = tk.Button(self.button_bar, title=_button_label)

使init方法返回到主关闭窗口。 旁注:我看不到任何异常(使用Visual Code Studio作为IDE)和Python 27。如果我删除按钮部分,则会创建并显示窗口。

main.py:

# -*- coding: utf-8 -*-
import display_commander
def main():
dc = display_commander.DisplayCommander()
dc.mainloop()
if __name__ == "__main__":
main()

display_commander.py:

# -*- coding: utf-8 -*-
import Tkinter as tk
class DisplayCommander(tk.Tk, object):
def __init__(self):
super(DisplayCommander, self).__init__()
self.geometry("350x150+150+150")
# Button bar
self.button_bar = tk.Frame(self)
self.button_bar.config(bg="red")
self.button_bar.pack()
# Buttons
self.buttons = []
for _button_label in ['New Window', 'Delete Window', 'Save Config', 'Load Config']:
_button_widget = tk.Button(self.button_bar, title=_button_label)
_button_widget.pack()
self.buttons.append([_button_label,_button_widget])
# Window List
self.window_list = tk.Frame(self)
self.window_list.config(bg="yellow")
self.window_list.pack()

title参数不适用于按钮,请将其替换为text

_button_widget = tk.Button(self.button_bar, text=_button_label)

(我不确定您想如何在代码中使用self.buttons列表,也许您有更好的字典选择? 如果您不需要排序结构存储,则查找/匹配小部件会更容易。

self.buttons = {}
[...]
self.buttons[_button_label] = _button_widget

最新更新