Python 2.7: Тематические "общие диалоги" интерфейсы tkinter через Ttk? - PullRequest
7 голосов
/ 21 октября 2010

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

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

Примечание. Общие диалоговые окна 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 или выше)?

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

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

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

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

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

0 голосов
/ 13 января 2016

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

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

...