В моем коде Python 3.3 я использую несколько полей со списком из библиотеки ttk, и они работают нормально, но если я использую любой из них, я получаю исключение, когда закрываю окно с помощью кнопки X. Вот пример:
from tkinter import Tk,Label,Button
from tkinter import ttk
from tkinter.ttk import Combobox
def cbox_do(event):
'Used for cbox.'
clabel.config(text=cbox.get())
a = Tk()
cbox = Combobox(a, value=('Luke','Biggs','Wedge'), takefocus=0)
cbox.bind("<<ComboboxSelected>>", cbox_do)
cbox.pack()
clabel = Label(a)
clabel.pack()
a.mainloop()
Если вы закроете его без выбора значения, все в порядке, но попробуйте закрыть его после того, как значение было выбрано, он выйдет, но выведет следующую ошибку в командную строку python:
can't invoke "winfo" command: application has been destroyed
while executing
"winfo exists $w"
(procedure "ttk::entry::AutoScroll" line 3)
invoked from within
"ttk::entry::AutoScroll .41024560"
(in namespace inscope "::" script line 1)
invoked from within
"::namespace inscope :: {ttk::entry::AutoScroll .41024560}"
("uplevel" body line 1)
invoked from within
"uplevel #0 $Repeat(script)"
(procedure "ttk::Repeat" line 3)
invoked from within
"ttk::Repeat"
("after" script)
Как я могу это исправить? Я был бы признателен за любую помощь, которую вы могли бы предоставить.
Обновление 1: Моя версия Python — v3.3, я использую в комплекте Tcl/Tk и Tkinter. Пробовал и x86 и x64 версии.
Обновление 2: исключение выдается только в том случае, если я запускаю свой скрипт из командной строки. Он не будет отображаться в режиме ожидания.