Почему в коде две колонки находятся на разном уровне? И как это исправить?
from tkinter import *
window = Tk()
image = PhotoImage(file="QGCXb.png")
window.iconphoto(False, image)
window.title("Skrip")
window.geometry("600x600")
window.resizable(False, False)
map_var = IntVar()
map_var2 = IntVar()
maps = {
1:'1',
2:'2',
3:'3',
4:'4',
5:'5',
6:'6',
7:'7',
8:'8'
}
mapse = {
1:'1.1',
2:'1.2',
3:'1.3',
4:'1.4',
5:'1.5',
6:'1.6',
7:'1.7',
8:'1.8'
}
for key in maps:
Radiobutton(window, text=maps[key],
variable=map_var,
value=key,
).grid(column=0, stick="w")
for key in mapse:
Radiobutton(window, text=mapse[key],
variable=map_var2,
value=key,
).grid(column =1, stick="w")
window.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
При вызове метода grid через параметр row нужно указать индекс строки, в которой нужно выводить виджет. Если параметр row не указать, то при каждом вызове grid будет размещать в следующей строке.
for i, key in enumerate(maps): # i будет меняться от 0 до количества элементов maps - 1
Radiobutton(window, text=maps[key],
variable=map_var,
value=key,
).grid(column=0, row=i, stick="w")
for i, key in enumerate(mapse):
Radiobutton(window, text=mapse[key],
variable=map_var2,
value=key,
).grid(column=1, row=i, stick="w")
P.S. ну или через само значение key, раз оно целочисленное, и соответствует номеру строки:
for key in maps:
Radiobutton(window, text=maps[key],
variable=map_var,
value=key,
).grid(column=0, row=key, stick="w")
for key in mapse:
Radiobutton(window, text=mapse[key],
variable=map_var2,
value=key,
).grid(column=1, row=key, stick="w")
