Python 2.7: Тематический диалог «общий диалог» tkinter через Ttk?

Python 2.7 (32-разрядная версия) Windows: мы экспериментируем с поддержкой Python 2.7 для тематического Tkinter ( ttk ) для простых графических интерфейсов и очень впечатлены! Одной из областей, где, по-видимому, появилась новая поддержка темы, является то, как обертываются общие диалоги OS.

Исправлено: Другими словами, общие диалоги MessageBox и ColorChooser имеют «уродливые», смотрящие в стиле Win 95 стильные кнопки против тематических (округлые / градиентные) кнопки, которые обычно отображаются в этих общих диалогах под XP, Vista и Windows 7. (Я тестирую на всех трех платформах с одинаковыми, не тематическими результатами).

Примечание. Общие диалоги askopenfilename ( askopenfilename , askopenfilenames , asksaveasfilename , askdirectory ) правильно оформлены.

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

Любые идеи о том, что нужно для того, ColorChooser общие диалоги MessageBox и ColorChooser Tkinter были ColorChooser с ОС (по крайней мере, под Windows XP или выше)?

Ваше наблюдение в основном правильное. Я вижу, что вы имеете в виду в окне messagebox и в colorchooser . Тем не менее, у моих filedialogs все, кажется, есть правильные закругленные кнопки и т. Д.

Моя рекомендация для вас в создании почтового ящика – создать свой собственный ящик сообщений с TopLevel виджета TopLevel , а затем определить, что вам нужно, и соответствующее поведение для разных кнопок (это определенно немного сложнее, чем просто использование почтового ящика, но если вы действительно нужны новые кнопки стиля, это сработает).

Однако я не думаю, что вы можете взломать решение проблемы colorchooser .

Я хоть на минуту, что, возможно, Python 3.1 исправил эту проблему, но, к сожалению, я попытался, и это не так. Я полагаю, если вам нужно, чтобы пользователь выбрал цвет, кнопки должны быть уродливыми.

Возможность получить более pyinstaller диалоговые окна – это скомпилировать ваш скрипт в исполняемый файл с помощью pyinstaller . Я объясняю это здесь более подробно.

tl; dr, похоже, что компиляция с помощью pyinstaller позволяет вам иметь диалоговые окна со стилем текущей операционной системы, но не настраиваемые стили.