2010-10-21 30 views
7

Python 2.7 (32-bit) Windows: Python 2.7'nin basit GUI'ler için temalı Tkinter (ttk) desteği ile deneyler yapıyoruz ve çok etkilendik !! Yeni tema desteğinin kısa sürdüğü bir alan, OS'ye özgü ortak diyalogların nasıl sarıldığıdır.Python 2.7: Ttk ile temalı "ortak diyalog" arayüzleri mi?

düzeltildi: Başka bir deyişle, MessageBox ve ColorChooser ortak diyaloglar, "çirkin" görünümlü Win 95 stil bloklu görünümlü düğmeler vs normalde XP, Vista altında bu ortak iletişim kutuları üzerinde göstermek temalı (yuvarlak/degrade) düğmeleri ve Windows 7 (aynı, temasız sonuçlar ile 3 platformda test ediyorum).

Not: filedialog ortak diyaloglar (askopenfilename, askopenfilenames, asksaveasfilename, askdirectory) Tüm düzgün temalı.

import tkMessageBox as messagebox 
messagebox.showinfo() 

import tkColorChooser as colorchooser 
color = colorchooser.askcolor(parent=root, title='Customize colors') 

(en azından Windows XP altında veya üstü) Tkinter en MessageBox ve ColorChooser ortak diyaloglar uyumlu OS tema olmak olsun erişmek için gerekli olan herhangi bir fikir?

+0

Bu harika bir yakalamadır. Bunu Python'daki Hata Takipçisine getireceğim ve biraz yol yapıp yapamayacağımızı göreceğim. –

+0

Rafe: Python Bug Tracker'ı bu sorunla güncellediğiniz için teşekkür ederiz. Bu sorunu çözmeye yardımcı olmaktan mutluluk duyarım. Kod ne şekilde katkıda bulunabileceğime emin değilim, ancak Windows'un çeşitli sürümlerinde herhangi bir kod düzeltmesini test etmekten memnuniyet duyarız. XP, Vista, Windows 7. – Malcolm

+0

Sorunun bir bağlantısı burada, kaynağa her zaman bakabilir ve kaynağı düzeltmenin bir yolu olup olmadığını görebilirsiniz. İşlerin işleyiş şekli, tek taraflı olarak kod koyamazken, herkes yamalar yazabilir ve onlara bakabilir. http://bugs.python.org/issue10171 –

cevap

2

Sizin gözleminiz esas olarak doğrudur. messagebox ve colorchooser'da neye atıfta bulunduğunuzu görüyorum. Ancak, tüm dosyalarınızı düzgün bir şekilde yuvarlatılmış düğmeler var gibi görünüyor.

Mesaj kutusunu oluşturmayla ilgili önerim, TopLevel widget'ını kullanarak kendi mesaj kutunuzu oluşturmak ve daha sonra ne yapmanız gerektiğini ve bunun için uygun davranışı tanımlamaktır. Farklı düğmeler (bu sadece bir mesaj kutusu kullanmaktan daha zordur, ancak yeni stil düğmelerine gerçekten ihtiyacınız varsa işe yarayacaktır).

Ancak, colorchooser sorununa çözüm arayacağınızı düşünmüyorum.

Belki de Python 3.1'in bu sorunu çözdüğü bir dakika olsa da, ne yazık ki denedim ve durum böyle değil. Bir renk seçmek için kullanıcıya ihtiyacınız varsa, düğmelerin çirkin olması gerekeceğini varsayalım.

+0

Rafe: Evet, siz doğruyunuz ... tematik (yuvarlak) düğmeler için destekle beklenen dosya dosyaları. Tema desteğinin olmaması, mesaj kutusu ve colorchooser diyalogları ile sınırlı görünmektedir. – Malcolm

+0

Ayrıca aşağıdaki garipliği de farkettim: Tüm dosya grupları (ve renk seçici) üst pencerenin sol üst köşesine göre görüntülenir ... Kendisini masaüstünde tutan askdirectory() iletişim kutusundan HARİÇ. – Malcolm

+0

@Malcolm: Bu oldukça garip. Bunu bağımsız olarak fark edeceğimi düşünmüyorum. –

0

Daha iyi görünen iletişim kutuları elde etmek için bir seçenek, komut dosyanızı pyinstaller kullanarak bir yürütülebilir dosyaya derlemektir. Bunu daha ayrıntılı bir şekilde açıkladım here.

tl; dr, pyinstaller ile derleme, şu anda çalışan işletim sisteminin stili ile iletişim kutularına sahip olmanızı sağlar, ancak özel stilleri değil.