为什么 tkinter 中这么短的代码如此缓慢?

Why is such a short code in tkinter so horribly slow?

提问人:bearface888 提问时间:11/17/2023 更新时间:11/17/2023 访问量:83

问:

我是 Python 初学者,目前正在学习创建单位转换程序。我不确定问题出在哪里,但这个程序运行得非常慢。 *我的意思是“慢慢”,我点击了条目,但它没有响应。如果我多次点击,大约需要 8-15 秒才能确认点击并允许我进入。 *有时运行后很慢,有时第一次运行时不慢,单击条目即可正常工作。但是一旦从下拉菜单中选择了不同的单位,它就会开始变慢。 这是我的代码 - 只是构建条目和下拉列表。功能部分尚未完成:

from tkinter import *
root=Tk()

entries_dict = {}
for row in range(6):
    for column in range(2):
        key = (row, column)
        entries_dict[key] = Entry(root, width =10)
        entries_dict[key].grid(row=row, column=column * 3)
        if column == 1:
            entries_dict[key].config(state="readonly")

unitg = ["g", "mg", "ug", "ng"]
unitL = ["L", "mL", "uL", "nL"]
unitmol = ["mol", "mmol", "umol", "nmol"]
unitgL = ["g/L", "g/mL", "g/uL", "g/nL",
          "mg/L", "mg/mL", "mg/uL", "mg/nL",
          "ug/L", "ug/mL", "ug/uL", "ug/nL",
          "ng/L", "ng/mL", "ng/uL", "ng/nL"]
unitmolL = ["mol/L", "mol/mL", "mol/uL", "mol/nL",
            "mmol/L", "mmol/mL", "mmol/uL", "mmol/nL",
            "umol/L", "umol/mL", "umol/uL", "umol/nL",
            "nmol/L", "nmol/mL", "nmol/uL", "nmol/nL"]
unitgmol = ["g/mol", "g/mmol", "g/umol", "g/nmol", 
            "mg/mol", "mg/mmol", "mg/umol", "mg/nmol",
            "ug/mol", "ug/mmol", "ug/umol", "ug/nmol",
            "ng/mol", "ng/mmol", "ng/umol", "ng/nmol"]
unitcollection = [unitg, unitL, unitmol, unitgL, unitmolL, unitgmol]

var_dict = {}
for row, units in enumerate(unitcollection):
    for column in [1, 4]:
        key = (row, column)
        var_dict[key] = StringVar(root)
        var_dict[key].set(units[0] if column == 1 else units[1])
        dropdownvar = OptionMenu(root, var_dict[key], *units)
        dropdownvar["menu"].config(bg="gray")
        dropdownvar.config(width=5)
        dropdownvar.grid(row=row, column=column)

for row in range(6):
    label_equal = Label(root, text = "=", width = 5)
    label_equal.grid(row=row, column = 2)

root.mainloop()

我刚刚学习了一个月,对这个问题感到沮丧。如果你能帮我,我将不胜感激! *尝试了 pycharm 和 IDLE,速度同样慢。

蟒蛇 tkinter

评论

0赞 Tim Roberts 11/17/2023
允许你输入什么?我看不出您在这里有任何功能可以响应任何类型的点击。
0赞 bearface888 11/17/2023
感谢您的回复!此代码中的主要内容是条目和下拉列表。运行它后,当我想在条目中输入某些内容时 - 它很慢,我在切换到指定条目之前单击该条目数百次。当我点击下拉列表时,它很慢 - 只有在我点击数百次后菜单才会下拉。
1赞 Tim Roberts 11/17/2023
你在什么上运行这个?你的代码对我来说非常有效。
1赞 Bryan Oakley 11/17/2023
该代码在 mac mini 上对我来说效果很好。
0赞 bearface888 11/17/2023
谢谢你让我知道!我正在使用 PyCharm。当我注意到它运行不正常时,我切换到 IDLE,但它也很慢。我使用的是 MacBook Pro

答: 暂无答案