Sanırım öyle değil. Hiçbir Orada yerleşik olan sınıfın kolayca yapmak için
İncelenmesi
Eğer tkFileDialog
modülün kaynak koduna baktığımızda, her iki Open
ve Directory
sınıflar tkCommonDialog
bulunan _Dialog
devralır.
Şimdiye kadar iyi; Bu sınıflar basit ve sadece iki yöntem uzanır. _fixresult
, seçeneklerinizi temel alan filtrelerdir (umut verici) ve _fixoptions
, sağ tcl parametrelerini ekler (ilk dizin gibi).
Ancak Dialog sınıfına ulaştığımızda (_Dialog'un üstü), bir adın tcl komutunu çağırdığını görüyoruz. Yerleşik isimler "tk_getOpenFile" ve "tk_chooseDirectory" dır. Bundan sonra çok fazla python seviyesinde özgürlüğümüz yok. Başka ne olduğunu görmeye gidersek tcl scripts are avaliable, we are disappointed.
seçenekleriniz Görünüşe
ttk::getOpenFile
ttk::getSaveFile
ttk::chooseDirectory
ttk::getAppendFile
Sonuç
Sıçanlar! Neyse ki, liste kutularını, giriş alanlarını, düğmeyi (ve diğer tk-yerleşimlerini) ve os modülünü kullanarak kendi iletişiminizi yapabilmeniz oldukça kolay olmalı.
yorumlarınızı itibaren
, bu gibi alternatif görünüyor Basit uygulanabilir bir basit iş çevresinde kullanmak olabilir
directory = os.path.dirname(os.path.realpath(tkFileDialog.askopenfilename()))
Onlar bir dosya seçmek zorunda, ama "Aç" olacak Düğüm, yolun dosya konumundan
hesaplanmış olması anlamında "bir yol döndürür", ama gerçekten istiyorum!
Bu nedenle, bu davranışı gerçekten istediğiniz ancak widget'ı yeniden denemek istemiyorsanız, doğrudan tcl komut dosyalarını çağırabilirsiniz. Kodu getOpenFile'dan kopyalamak ve daha genel bir nesneyi seçmek için izin veren daha gevşek argümanlar sağlamak mümkün olabilir. Bu benim uzmanlık alanım değil ve gerçekten kötü bir fikir gibi görünüyor, ancak here doğrudan tcl'i nasıl aradığınız ve here'un altında yatan komutlar hakkında daha fazla bilgi edinebileceğiniz yer.
Düğmeye basıldığında, 'askdirectory()' ve 'askopenfilename()' işlevlerini sıralamak mı istiyorsunuz? – Goyo
Hayır, dosya veya klasörleri seçmek için ortak bir iletişim kutusu olmasını istiyorum. (Bunu açıklığa kavuşturmak için soruyu düzenledik) –
Bunların gerçekten titizlikle yapılmasını sağlayacak şekilde yapılandırılmamış olsa da, kullanıcıdan 'tkinter.askopenfilename() 'kullanarak bir dosya seçmesini ve ardından os.path.dirname komutunu kullanmasını isteyebilirsiniz.(), dosyanın seçildiği dizini almak için seçilen dosyada, aynı iletişim kutusundan, hem bir dosyayı hem de bir dizini etkili bir şekilde döndürür. –