【发布时间】:2018-05-08 11:00:33
【问题描述】:
我目前正在使用 python GUI 进行测试,并制作了一个脚本,该脚本从 2 个文本字段中获取 2 个输入的数字,并在按下按钮时生成一个标签块(例如,我输入 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()
【问题讨论】:
-
您可以尝试通过将
padx和/或pady传递给grid来使用填充。在你做的时候Label(...).grid(padx=10, pady=20) -
添加代码示例可能有助于更好地理解您的问题。
-
添加它,测试它看看我的意思 - 对象在生成新对象时会稍微跳跃
-
当我点击你的任何按钮时什么都没有发生。可能是因为你的代码缩进好像坏了。
-
啊,也许我应该解释一下 - 您必须在 2 个文本框中输入数字,然后按“宽度”和“高度”按钮将变量更改为该数字,然后按大生成雪花的按钮(是的,这 2 个按钮有点多余,我猜有时会将它们的功能移到大按钮上)
标签: python user-interface tkinter