Tix ComboBox проблема с Python 3
Используя следующий код Python 3:
import tkinter
from tkinter import tix
class App(tkinter.Tk):
def __init__(self):
tkinter.Tk.__init__(self)
cmbbx = tix.ComboBox()
cmbbx.pack()
self.mainloop()
if __name__ == "__main__":
application = App()
Я пытаюсь создать простое окно, содержащее пустой выпадающий список. Когда я запускаю программу с python3
Команда, я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "combo.py", line 12, in <module>
application = App()
File "combo.py", line 7, in __init__
cmbbx = tix.ComboBox()
File "/usr/lib/python3.5/tkinter/tix.py", line 583, in __init__
cnf, kw)
File "/usr/lib/python3.5/tkinter/tix.py", line 315, in __init__
self.tk.call(widgetName, self._w, *extra)
_tkinter.TclError: invalid command name "tixComboBox"
После некоторых поисков я обнаружил, что мне нужно заменить каждый tkinter
с tix
в моем коде, чтобы заставить его работать, но это дает мне еще одно сообщение об ошибке:
Traceback (most recent call last):
File "combo.py", line 12, in <module>
application = App()
File "combo.py", line 6, in __init__
tix.Tk.__init__(self)
File "/usr/lib/python3.5/tkinter/tix.py", line 218, in __init__
self.tk.eval('package require Tix')
_tkinter.TclError: can't find package Tix
Другая ссылка показала, что я должен использовать root.tk.eval('package require Tix')
, но это не похоже на работу.
Я немного растерялся между всеми этими tkinter
а также tix
и я думаю, что предыдущие решения работают только с Python 2, так как он говорит о Tix
и не tix
,
У вас есть идея, чтобы это сработало?
1 ответ
На этой странице указано, что tix
устарела в Python 3 и что ttk
должен быть использован. Мой новый код:
import tkinter
from tkinter import ttk
class App(tkinter.Tk):
def __init__(self):
tkinter.Tk.__init__(self)
cmbbx = tkinter.ttk.Combobox()
cmbbx.pack()
self.mainloop()
if __name__ == "__main__":
application = App()