【发布时间】:2018-05-26 11:08:47
【问题描述】:
我正在尝试将 Optionmenu 居中并排对齐,但每当我取消注释 .grid() 语句时,窗口中不会显示任何内容,它会变为空白。
import tkinter as tk
from utils import editionMap, topicMap, langMap
class OptionMenu(tk.Frame):
def __init__(self, master, status, *options):
self.frame = tk.Frame(master)
self.frame.pack()
self.status = tk.StringVar()
self.status.set(status)
self.dropdown = tk.OptionMenu(self.frame, self.status, *options)
self.dropdown.pack()
def main():
root = tk.Tk()
Edition_Filter = OptionMenu(root, "Edition", *editionMap.keys())
#Edition_Filter.grid(row=0, column=0) <---Uncomment
Language_Filter = OptionMenu(root, "Language", *langMap.keys())
#Language_Filter.grid(row=0, column=1) <---Uncomment
Topic_Filter = OptionMenu(root, "Topic", *topicMap.keys())
#Topic_Filter.grid(row=0, column=2) <---Uncomment
root.mainloop()
if __name__ == '__main__':
main()
我希望将显示选项菜单水平并排为Edition Language Topic。
我的实际输出是:
【问题讨论】:
-
如果你在里面创建
Frame,那么你必须在self.frame.pack()中使用参数。而且您不能使用grid()- 或者您使用self.frame.grid()而不是self.frame.pack() -
@furas 我知道 'pack' 和 'grid' 不应该混合使用,您可以仅根据网格编辑上述代码吗?
-
你混合了两种不同的技术
self.frame = tk.Frame(master)和class OptionMenu(tk.Frame):- 再次查看上一个问题中的代码。 -
@furas 所以我不必在课堂上传递参数,对吗?
标签: python oop tkinter optionmenu