2015-01-28 3 views
1

Я использую Tkinter на своем Mac. Всякий раз, когда у меня есть Checkbutton или Radiobutton, анимация, когда я отменяю ее выбор. Например, checkbutton, который отмечен, onclick, отменит выделение на долю секунды, выберите секунду, затем отмените выбор - кто-нибудь сталкивается с этой проблемой, и если да, то это исправление?Tkinter Mac Checkbutton Отменить выбор анимации Glitch

from Tkinter import * 
root = Tk() 
Checkbutton1 = Checkbutton(root).pack() 
root.mainloop() 

ответ

1

Эта проблема, вероятно, связана с распределением Tcl/Tk на Mac OS X, Aqua Cocoa Tk 8.5. Графические проблемы have been confirmed for Tkinter, хотя в отчете не упоминается проблема Checkbutton.

Вы должны получить одну из последней версии Tcl (некоторые версии 8.5 или 8.6) и связать Python с ней.

Предупреждение: см. Ниже EDIT, это может вызвать проблемы с другими пакетами.

Я следовал this issue on homebrew, чтобы установить tcl-tk (8.6) с завариванием, а затем использовать Python. Команды для Python 2 являются:

brew install homebrew/dupes/tcl-tk 
brew uninstall python 
brew install python --with-tcl-tk 

(вариант, используемый в вышеуказанной ссылке является --with-сваренное-тк, но это является устаревшим для --with-TCL-TK)

Формула keg-only, поэтому только Python узнает о новом Tcl/Tk. tclsh и Желание также будет использовать старый Tcl. Чтобы проверить версию и основные функции в Python:

import Tkinter 
Tkinter._test() 

Чтобы проверить версию в tclsh:

puts $tcl_version 

Для Python 3, используйте python3 в варку и tkinter в питона сценариев.

Если вы предпочитаете использовать .dmg и не возражаете против коммерческих, но бесплатных (как в пиве) решений, вы можете попробовать ActiveTcl. TkDocs имеет хорошее значение tutorial. На этот раз он также должен установить новый желанием.

EDIT: после выполнения описанных выше действий графический сбой должен исчезнуть, но если вы используете matplotlib, подушку или другой пакет, который использует бэкэнд Tk, вы можете получить предупреждение, подобное этому при импорте бэкэнд-модуля:

TKApplication Класс реализован как в /usr/local/opt/tcl-tk/lib/libtk8.6.dylib и /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. Будет использоваться один из . Какой из них не определен.

(или, возможно,/Library/Frameworks против/System/Library/Frameworks, если вы установили ActiveTcl)

При построении с Matplotlib приложения разбился ... Так что я не рекомендую этот метод, если вы используете таких пакетов. В настоящее время я пытаюсь заставить Python работать с ActiveTcl, чтобы увидеть, могу ли я устранить глюк и работать с matplotlib. ActiveTcl 8.5, кажется, достаточно, чтобы удалить основные сбои, будучи совместимыми с большинством пакетов, но мне еще предстоит попробовать.

Некоторые идеи по настройке скрипта установки для установки подушек в этом issue, но я не мог применить это к matplotlib.

+0

Приветствия человека. Благодаря тонну. –

Смежные вопросы