В настоящее время я тестирую с помощью 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()