我正在尝试使用按钮和标题创建一个简单的GUI。我目前正在在rasbian(Linux darbian的修改版)上运行的rasberry pi上进行编码。当我尝试调整窗口大小时,它的行为就像什么都没发生一样,并且由于窗口太小而消失了。我做的和其他教程一样。这是我的代码:
content = ttk.Frame(root, padding=(3,3,12,12))
content.grid(column=0, row=0, sticky=(N, S, E, W))
frame = ttk.Frame(content, height=500, width=900)
frame.grid(column=0, row=0, columnspan=3, rowspan=3, sticky=(N, S, E, W))
title = ttk.Label(content, text="QRNG")
title.grid(column=1, row=0, sticky=(N))
diceButton = ttk.Button(content, text="Dice")
diceButton.grid(column=0, row=1, sticky=(W))
imageButton = ttk.Button(content, text="Image")
imageButton.grid(column=1, row=1, sticky=())
randomNumberButton = ttk.Button(content, text="Random Numbers")
randomNumberButton.grid(column=2, row=1, sticky=(E))
fileButton = ttk.Button(content, text="Random Number File")
fileButton.grid(column=0, row=2, sticky=(S, W))
otherButton = ttk.Button(content, text="Empty")
otherButton.grid(column=1, row=2, sticky=(S))
exitButton = ttk.Button(content, text="Exit")
exitButton.grid(column=2, row=2, sticky=(S, E))
root.columnconfigure(0, weight=1, minsize=80)
root.rowconfigure(0, weight=1, minsize=80)
root.columnconfigure(0, weight=1, minsize=80)
root.columnconfigure(1, weight=1, minsize=80)
root.columnconfigure(2, weight=1, minsize=80)
root.rowconfigure(0, weight=1, minsize=80)
root.rowconfigure(1, weight=1, minsize=80)
root.rowconfigure(2, weight=1, minsize=80)
对不起,很抱歉,但是我无法追溯导致此问题的原因。粘性在启动GUI时起作用,但之后不再起作用并且GUI是静态的。甚至是陌生人,我都复制了该网页中的示例并将其粘贴成功,但是当我尝试将其应用于自己的代码时,它将无法正常工作。我从this web page的结尾处获取了代码。 我将不胜感激给予的任何帮助。万一我从按钮中选择了一些选项,我认为这些选项对于理解代码并不重要。
答案 0 :(得分:0)
根据经验,每次使用grid
时,都应在包含的小部件中至少给一行和一列赋予权重。您已经为根窗口小部件完成了此操作,但是尚未为content
或frame
完成。
另一个问题是,根窗口的第0行第0列中只有窗口小部件,但您已经配置了行和第0-3列的权重。
因此,假设您希望content
填充整个窗口,请在根窗口中删除第1行和第2行以及第1列和第2列的配置。
在content
内部,您将小部件放置在0-3行和0-3列中。假设您希望这些行和列的内容等距分布,则应为每个行和列赋予相等的权重。从代码的外观看,您似乎正在尝试执行此操作,但此操作是在根窗口而不是在content
上完成的。
以下示例包括这些修改。我还重新组织了您的代码,使其更具可读性。以我的经验,最好将每组小部件的所有布局命令组合在一起。这样可以使最终布局的可视化变得更加容易,并且可以轻松进行调整。
root.columnconfigure(0, weight=1, minsize=80)
root.rowconfigure(0, weight=1, minsize=80)
content = ttk.Frame(root, padding=(3,3,12,12))
content.grid(column=0, row=0, sticky=(N, S, E, W))
content.rowconfigure(0, weight=1, minsize=80)
content.columnconfigure(0, weight=1, minsize=80)
content.columnconfigure(1, weight=1, minsize=80)
content.columnconfigure(2, weight=1, minsize=80)
content.rowconfigure(1, weight=1, minsize=80)
content.rowconfigure(2, weight=1, minsize=80)
frame = ttk.Frame(content, height=500, width=900)
title = ttk.Label(content, text="QRNG")
diceButton = ttk.Button(content, text="Dice")
imageButton = ttk.Button(content, text="Image")
randomNumberButton = ttk.Button(content, text="Random Numbers")
fileButton = ttk.Button(content, text="Random Number File")
otherButton = ttk.Button(content, text="Empty")
exitButton = ttk.Button(content, text="Exit")
frame.grid(column=0, row=0, columnspan=3, rowspan=3, sticky=(N, S, E, W))
title.grid(column=1, row=0, sticky=(N))
diceButton.grid(column=0, row=1, sticky=(W))
imageButton.grid(column=1, row=1, sticky=())
randomNumberButton.grid(column=2, row=1, sticky=(E))
fileButton.grid(column=0, row=2, sticky=(S, W))
otherButton.grid(column=1, row=2, sticky=(S))
exitButton.grid(column=2, row=2, sticky=(S, E))