2010-10-21 2 views
7

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

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

Примечание: FileDialog общие диалоги (askopenfilename, askopenfilenames, asksaveasfilename, askdirectory) все правильно тематические.

import tkMessageBox as messagebox 
messagebox.showinfo() 

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

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

+0

Это замечательный улов. Я собираюсь привести это в Bug Tracker на Python и посмотреть, сможем ли мы продвинуться вперед. –

+0

Rafe: Спасибо за обновление Python Bug Tracker с этой проблемой. Я был бы более чем счастлив помочь исправить эту проблему. Я не уверен, что могу внести свой код в код, но я был бы счастлив протестировать любые исправления кода на нескольких версиях Windows, например. XP, Vista, Windows 7. – Malcolm

+0

Вот ссылка на проблему, вы всегда можете посмотреть источник и посмотреть, есть ли способ исправить источник. То, как все работает, в то время как вы не можете совершать код в одностороннем порядке, каждый может писать патчи и просматривать их. http://bugs.python.org/issue10171 –

ответ

2

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

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

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

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

+0

Rafe: Да, вы правы ... filedialogs DO визуализируют, как ожидалось, с поддержкой тематических (закругленных) кнопок. Отсутствие поддержки тем, похоже, ограничено диалоговыми окнами сообщений и колонок colorchooser. – Malcolm

+0

Я также заметил следующую странность: все filedialogs (и colorchooser) отображаются относительно верхнего левого угла родительского окна ... EXCEPT диалоговое окно askdirectory(), которое центрируется на рабочем столе. – Malcolm

+0

@Malcolm: Это довольно странно. Я не думаю, что когда-нибудь заметлю это самостоятельно. –

0

Опция для поиска более удобных диалоговых окон заключается в том, чтобы скомпилировать ваш скрипт в исполняемый файл, используя pyinstaller. Я объясняю это более подробно here.

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