我试图构建一个弹出窗口,其中包含不同的文本消息供用户响应。
我想办法把文本(标签)和按钮放在窗口中间,但没有成功。
弹出窗口的大小已确定。框架内部居中应考虑文本标签的宽度和高度(以字母数量定义)。
正如您在代码中看到的,w
,h
定义窗口大小,xbias
,ybias
有一个表达式将testframe
居中(两者都包含alpha1
,alpha2
作为文本大小的校正因子)
我正在寻找alpha1
,alpha2
(现在等于1)的数学表达式。。。或者更好的方法来构造这样一个弹出窗口。
root = Tk()
w = '400'
h = '100'
root.geometry('{}x{}'.format(w, h))
root.configure(bg='lightgreen')
txt = StringVar()
txt.set("This is an error message")
alpha1 = 1
alpha2 = 1
xbias = int(w) / 2 - (len(txt.get()) / 2) * alpha1
ybias = int(h) / 2 - alpha2
testframe = ttk.Frame(root)
testframe.grid(row=0, column=1, pady=ybias, padx=xbias)
label1 = ttk.Label(testframe, textvariable=txt)
label1.grid(row=0, column=0)
您是否考虑过为此使用
.pack()
方法。这样可以更容易地达到预期效果:经过一些研究,使用网格做这件事比预期的要容易得多,如下所示:
如果我们分配
.rowconfigure()
和.columnconfigure()
一个weight
而不是0
,那么指定的行和列将展开以填充窗口中给它的空间。在根窗口中居中框架的方法如下:
相关问题 更多 >
编程相关推荐