我是tkinter的新手,我尝试设计一个以下形式的GUI:网格布局包含一个3x3的正方形,其中所有9个瓷砖的大小相同。在角落瓷砖中有一些文字,中间是一个数字。此外,还有一行包含随机按钮。如果单击它,它会将方块中间的数字更改为1到20之间的随机数。我设法让网格看起来像我想要的那样,并且在调整包含GUI的窗口时调整大小。
我有以下问题:我只希望在更改窗口大小时调整网格大小。不幸的是,中间图块根据数字的大小(1位数或2位)改变大小。我认为给方块中的每一行和每列具有相同的重量将确保它们保持相同的尺寸,但它不会。我读了一些像grid_propagate = False这样的属性,但是添加它并没有为我改变任何东西。 如果有人向我解释,我将非常感激!
from tkinter import *
import random
class Application(Frame):
def __init__(self):
Frame.__init__(self, background= '#C1FFBF')
self.grid(sticky=(N,W,E,S))
self.Initialise()
def Initialise(self):
top=self.winfo_toplevel()
top.grid_rowconfigure(0, weight=1)
top.grid_columnconfigure(0, weight=1)
for i in range(3):
for j in range(3):
self.grid_rowconfigure(i, weight=10)
self.grid_columnconfigure(j, weight=10)
self.grid_rowconfigure(3,weight=1)
self.B = Button(self,text='Random',command=self.random)
self.B.grid(row=3,column=1,sticky=(N,W,S,E))
self.Panel1 = Message(self, text= 'Some text', anchor = 'center',font = ("Purisa",30))
self.Panel1.grid(row=0,column=0,sticky=(N,W,S,E))
self.Panel2 = Message(self, text= 'Some text', anchor = 'center',font = ("Purisa",30))
self.Panel2.grid(row=0,column=2,sticky=(N,W,S,E))
self.Panel3 = Message(self, text= 'Some text', anchor = 'center',font = ("Purisa",30))
self.Panel3.grid(row=2,column=0,sticky=(N,W,S,E))
self.Panel4 = Message(self, text= 'Some text', anchor = 'center',font = ("Purisa",30))
self.Panel4.grid(row=2,column=2,sticky=(N,W,S,E))
self.Middle = Message(self, text= '0', anchor = 'center',font = ("Purisa",30))
self.Middle.grid(row=1,column=1,sticky=(N,W,S,E))
top.bind('<Return>', self.random())
def random(self):
self.Middle.config(text=str(random.randint(1,20)))
app = Application()
app.master.title('Sample application')
app.mainloop()
附带问题:我尝试绑定返回键以通过添加行
来调用随机函数top.bind(&#39;&#39;,self.random())
作为Initialise的最后一行,但按下它并没有做任何事情。我的错误是什么?