2009-09-10 27 views
34

Tk() tarafından açılmış, görünen kök penceresinden kurtulmanın veya başka bir yoldan kurtulmanın akıllı bir yolunu biliyor musunuz? Sadece normal bir diyalog kullanmak istiyorum.Python Tkinter kök penceresinden nasıl kurtulurum?

İletişim kutusunu atlayıp tüm bileşenleri kök penceresine koymalı mıyım? Mümkün mü veya arzu edilebilir mi? Yoksa daha akıllı bir çözüm var mı?

+4

Resim bağlantısı geçersiz. –

cevap

47

Muhtemelen, tk tabanlı uygulamaların büyük çoğunluğu, tüm bileşenleri varsayılan kök penceresine yerleştirir. Bu zaten var olduğundan beri bunu yapmak için en uygun yoldur. Varsayılan pencereyi gizlemeyi ve kendinizinkini yaratmayı seçmek, yapılması gereken çok iyi bir şey olsa da, yapılması gereken en iyi şey. Tekrar görünür pencere olmak için

import Tkinter as tk 
root = tk.Tk() 
root.withdraw() 

, deiconify (veya wm_deiconify) yöntemini çağırın:

bunu gizleme hakkında özel soruyu cevaplamak için kök pencerenin withdraw yöntemini kullanın. Eğer iletişim bitirdikten sonra

root.deiconify() 

, sen destroy yöntemiyle diğer tüm Tkinter widget'lar ile birlikte kök penceresini yok edebilir:

root.destroy() 
OSX'te
+0

Ana pencereyi kullanarak hile yaptı. Teşekkürler! –

+0

StackOverflow üzerinde, .destroy(), tkinter.Toplevel (self) .destroy(), quit(), tkinter.Toplevel (self) .quit(), withdraw(), iconify() öğesini kullanarak çözümler vardır. Güzel. Bunun dışında tek bir çalışma değil ... Ben yaptım "top_lev = tkinter.Toplevel (label); label.master.destroy(); label.destroy(); top_lev.destroy(); root = tkinter.Tk(); root.withdraw(); bir çekicilik gibi çalışan root.destroy(). –

+0

@deusexmachina: Eğer hepsi onları kullanırsanız çalışırlar, ama hepsinin farklı amaçları vardır. Her ne kadar .quit() ve and .destroy() işlevleri etkili bir şekilde aynıdır. –

10

Python/TKinter ortamım olmadığı için test etmedim, ancak bunu deneyin.

Saf Tk'de, pencereleri yönetmek için "wm" adlı bir yöntem vardır. Orada "wm withdraw .mywindow" gibi bir şey yapabilirsiniz. Burada '.mywindow' bir üst düzeydir. Eğer deiconify (veya wm_deiconify) yöntemini çağırın yeniden görünür pencere olmak için

root = Tkinter.Tk() 
root.withdraw() # won't need this 

:

Tkinter size benzer bir şey yapmak mümkün olmalıdır.

root.deiconify() 
+0

Pencereyi nasıl geri alıyorsunuz? – IcyFlame

+1

@IcyFlame: Pencerenin yeniden görünmesi için root.deiconify() işlevini kullanıyorsunuz. –

+0

Teşekkürler, bu soruyu zaten sormuştum ve bir cevap aldım: http://stackoverflow.com/questions/15967690/showing-a-window-that-was-hidden-using-root-withdraw-in- tinkter – IcyFlame

4

, Iconify daha iyi iş gibi görünüyor:

root = Tkinter.Tk() 
root.iconify() 
0

Eğer pencere oluşturulduktan gibi bir olmak "flaş" orada istemiyorsanız, bu hafif bir değişim kullanın:

import Tkinter as tk 
root = tk.Tk() 
root.overrideredirect(1) 
root.withdraw()