2012-10-25 11 views
5

Chcę wypełnić moje okno za pomocą, powiedzmy, etykiet i chcę je zawijać, gdy kolumna będzie większa niż obecny rozmiar okna (lub raczej ramka nadrzędna).Jak utworzyć układ Tiling/układ przepływu w TkInter?

Próbowałem użyć układu grid, ale muszę sam obliczyć rozmiar zawartości każdego wiersza, aby wiedzieć, kiedy umieścić następny element w następnym wierszu.

Powodem, dla którego pytam, jest to, że chcę utworzyć ikony kafelkowego pliku.

Lub zapytał inaczej, czy istnieje coś takiego jak Swing na FlowLayout dla TkInter?

Odpowiedz

7

Co zrobić, gdy chcę coś takiego, to użyć widżetu tekstowego do kontenera. Widget tekstowy może mieć osadzone widżety i zawijać je jak tekst. Dopóki twoje widżety są tej samej wysokości, efekt jest całkiem niezły.

Na przykład (wycinane i wklejane z pytania na prośbę autora):

textwidget = tk.Text(master) 
textwidget.pack(side=tk.LEFT, fill=tk.BOTH) 
for f in os.listdir('/tmp'): 
    textwidget.window_create(tk.INSERT, window=tk.Label(textwidget, text=f)) 
+0

Great! Dziękuję Ci. proszę wstawić podany kod do swojej odpowiedzi, aby następna osoba szukająca tego nie musiała przeglądać dokumentów w widgecie tekstowym :) – devsnd

+0

Użytkownik może nadal używać "Tekstu" jako pola tekstowego i wpisać tekst lub usuń elementy z backspace itp., co jest najprawdopodobniej niepożądane w przypadku używania go jako menedżera GUI. Możesz wyłączyć edycję za pomocą 'textwidget.config (state = tk.DISABLED)'. Mimo to użytkownik może wybrać tekst/puste miejsce, a kursor wygląda jak kursor tekstowy. Te dwie rzeczy można w końcu również naprawić za pomocą następującego kodu, który ustawia kolor zaznaczenia tła na zwykły kolor tła pola tekstowego i zmienia kursor na strzałkę. 'textwidget.config (selectbackground = textwidget.cget ('background'), cursor = 'arrow')' – nitro2k01

+0

@ nitro2k01: prawdopodobnie prostszym rozwiązaniem jest po prostu dodanie klawiszy, które wyłączają selekcję. Ponadto, gdy widget jest wyłączony, nie będzie kursora wstawiania, więc zmiana go nie jest konieczna. –

Powiązane problemy