我目前正在用pythongui进行测试,并编写了一个脚本,从两个文本字段中提取两个输入的数字,按下一个按钮就会生成一块标签(例如,我输入4和5,这样它就会生成一个4x5的标签字段)
但现在我要做的是:当我生成对象时,我要阻止它们 -移动 -重叠 我的当前对象(按钮、文本字段)。 我可以找到一些重叠的东西,但是每次我产生新的东西,所有的东西都会移动。我可以在网格中设置一个特定的字段为“保留”吗,这样新的内容就不会出现在那里了?你知道吗
这是我目前的尝试-正如你所见,它不再重叠,但如果雪花生成,文本框和按钮仍然“跳跃”了一小段距离
编辑:“跳跃”是由于增加的雪花字体大小-这仍然留下我的问题,我如何防止这一点,因为我不想被限制在小字体大小
from tkinter import *
wide = 0
deep = 0
entrytext = "test"
window = Tk()
window.title("test")
window.geometry('1000x1000')
ent = Entry(window)
ent.grid(column=0, row=1)
def GetClicked():
global wide
wide = ent.get()
wide = int(wide)
btn2 = Button(window, text="Width", command=GetClicked)
btn2.grid(column=0, row=2)
ent2 = Entry(window)
ent2.grid(column=0, row=3)
def GetClicked2():
global deep
deep = ent2.get()
deep = int(deep)
btn = Button(window, text="Depth", command=GetClicked2)
btn.grid(column=0, row=4)
def WingBut(column,row):
lbl = Label(window, text="T", font=("Wingdings", 15))
lbl.grid(column=column, row=row)
def clicked(wide,deep):
h = 0
j = 0
while h in range (deep):
i = 0
h += 1
while i in range(wide):
if i > 2 or j > 5:
WingBut(i,j)
i += 1
if i == wide:
j += 1
btn = Button(window, text="Buttonspam",font=("Arial", 10),command=lambda: clicked(wide,deep))
btn.grid(column=0, row=0)
window.mainloop()
这是由于动态添加的标签(标记为“T”的标签)的结果大小高于每行的当前行高。因为行大小必须增加以适应新标签,所以同一行中的其他小部件也会调整大小,以便行的总体高度保持一致。这是造成跳跃效应的原因。你知道吗
纠正这种情况的一种方法是减小“T”标签的字体大小。试着把它设为10,问题就会消失。你知道吗
另一种解决方法是将每一行的
minsize
设置为该行中最高小部件的高度,例如“T”标签小部件高度。你知道吗您可以在调用
window.mainloop()
之前添加上述代码。你知道吗我选择36是因为这使得行的高度至少为36像素,并且这在我的系统上足以显示“T”,而不会导致行的大小调整。你知道吗
如果不想硬编码
minsize
,可以动态计算它。你知道吗这是一种方法。可能有一种更好、更直接的方法来使用字体本身,但是如果你感兴趣的话,你可以研究一下。你知道吗
相关问题 更多 >
编程相关推荐