3

启动程序之间到底有什么区别

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 () 采用 2 到 3 个位置参数,但给出了 4 个。” 第一个工作得很好。

4

1 回答 1

5

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

如果要使用 tix,则应将其与 tkinter 分开导入,并且不应进行全局导入,因为它会导致歧义,这可能是您遇到问题的原因。

像这样导入它们:

import tkinter as tk
from tkinter import tix

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

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

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

于 2015-04-08T14:37:33.583 回答