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()
Другие вопросы по тегам