2012-10-25 17 views
5

Penceremi, örneğin, etiketlerle doldurmak istiyorum ve sütunun geçerli pencereden (veya daha ziyade üst çerçeve) boyutundan daha büyük olması gerektiğinde bunların sarılmasını istiyorum.TkInter'da bir Döşeme düzeni/Akış düzenini nasıl oluştururum?

grid mizanpajını kullanmayı denedim, ancak sonraki satırdaki sonraki öğenin ne zaman ekleneceğini bilmek için her satırın içeriğinin boyutunu kendim hesaplamam gerekiyor.

Sormamın nedeni, bir çeşit bozuk dosya simgeleri oluşturmak istememdir.

Ya da farklı bir şekilde sordu, TkInter için Swing'in FlowLayout'u gibi bir şey var mı?

cevap

7

Böyle bir şey istediğimde ne yaptığım, kapsayıcının metin widget'ını kullanmaktır. Metin parçacığı gömülü widget'lara sahip olabilir ve tıpkı metin gibi sarılır. Widget'larınızın hepsi aynı yükseklikte olduğu sürece efekt oldukça hoştur. Örneğin

(kesim ve yazarın isteği üzerine söz yapıştırılan):

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

Büyük! teşekkür ederim. Lütfen cevabınıza verdiğim kod örneğini ekleyiniz, bu yüzden bunu arayan bir sonraki kişi metin widget'ındaki dokümanlara bakmak zorunda kalmayacaktır :) – devsnd

+0

Kullanıcı hala 'Metin'i bir metin kutusu olarak kullanabilir ve yazabilir Bir GUI yöneticisi olarak kullanmak için büyük olasılıkla istenmeyen, backspace vb. Textwidget.config (state = tk.DISABLED) 'ile düzenlemeyi devre dışı bırakabilirsiniz. Öyle olsa bile, kullanıcı metin/boş alan seçebilir ve imleç metin imleci gibi görünür. Bu iki şey aynı zamanda arka plan seçim rengini metin kutusunun normal arka plan rengine ayarlayan aşağıdaki kodla da sabitlenebilir ve imleci bir ok halinde değiştirir. textwidget.config (selectbackground = textwidget.cget ('arka plan'), imleç = 'ok') ' – nitro2k01

+0

@ nitro2k01: seçimin devre dışı bırakılmasını sağlayan basit bağlantıların basitçe eklenebilmesi, tartışmasız daha basit bir çözümdür. Ayrıca, widget devre dışı bırakıldığında hiçbir ekleme imleci olmayacaktır, bu yüzden değiştirmek gerekli değildir. –