使用 tkinter 和 tix 的区别(作为 tkinter?)

Difference between working with tkinter and tix (as tkinter?)

启动程序到底有什么区别
from tkinter import *

from tkinter import tix as tk

因为后一个我遇到了问题,所以才提出这个问题。我已将所有 tkinter 元素从普通 'Button' 更改为 'tk.Button',但这似乎并不是唯一的区别。

特别是我在以下代码位中遇到问题:

class OptionMenus(OptionMenu):
    def __init__(self, master, status, *fonts):
        self.var = StringVar(master)
        self.var.set(status)
        OptionMenu.__init__(self, master, self.var, *fonts,
                            command = update_config)
        self.config(width = "9", height = "1")

class OptionMenus(tk.OptionMenu):
    def __init__(self, master, status, *fonts):
        self.var = tk.StringVar(master)
        (self.var).set(status)
        (tk.OptionMenu).__init__(self, master, self.var, *fonts,
                                 command = update_config)
        self.config(width = "9", height = "1")

(以防万一我怎么称呼它)

fonts_menu = OptionMenus(buttons, strings[17], *fonts)

后一个产生错误:"TypeError: init() takes from 2 to 3 positional arguments but 4 were given." 第一个很好用。

tix 和 tk 是两个独立的模块。他们有一些名称相似的小部件,但它们不是可互换的库。

如果您想使用 tix,您应该将它与 tkinter 分开导入,并且您应该进行全局导入,因为它会导致歧义,这可能就是您有问题。

像这样导入它们:

import tkinter as tk
from tkinter import tix

然后,像这样使用小部件:

tk.Button(...)
tix.OptionMenu(...)

然后 crystal 清楚哪些小部件来自哪些库。