Próbuję utworzyć siatkę przycisków (w celu uzyskania klikalnego efektu komórki) z Tkinter.Jak utworzyć samosadującą siatkę przycisków w tkinter?
Moim głównym problemem jest to, że nie mogę wykonać grid
, a przyciski autoregulacji i dopasowania do okna nadrzędnego.
Na przykład, gdy mam dużą liczbę przycisków na siatce, zamiast kurczenia się przycisków, aby kratka mieściła się w oknie, otrzymuję rozciągniętą ramkę, która gaśnie z ekranu.
Efekt, którego szukam, to siatka wypełniająca całą dostępną przestrzeń, a następnie zmieniająca rozmiar komórek w celu dopasowania do tej przestrzeni. Czytałem w dokumentacji, ale nadal nie mogę dowiedzieć się, jak to zrobić.
Jest to kod podstawowy, który jest mój punkt wyjścia:
def __init__(self):
root = Tk()
frame = Frame(root)
frame.grid()
#some widgets get added in the first 6 rows of the frame's grid
#initialize grid
grid = Frame(frame)
grid.grid(sticky=N+S+E+W, column=0, row=7, columnspan=2)
#example values
for x in range(60):
for y in range(30):
btn = Button(grid)
btn.grid(column=x, row=y)
root.mainloop()
Dzięki! To działało świetnie. Nie jestem pewien, dlaczego nie znalazłem klasy Grid. Czytałem dokumentację menedżerów geometrii, ale odkryłem tylko metodę .grid. – Kiril
Twój przykład nie oznacza, że przyciski rozwijają się podczas zmiany rozmiaru w moim systemie. Używam Xubuntu 14.04, 32-bit. Próbowałem go na obu Python 2.x i 3.x. – Shule
Bardzo pomocny przykład. @Kiril - możesz również wywołać columnconfigure z odwołania do obiektu, np. root.rowconfigure (0, waga = 1) – NargothBond