tkinter Entry validatecommand无法调用Entry.config文件()

2024-04-25 06:09:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在python3.6.6中,我想在修改另一个条目小部件时配置一个tkinter条目小部件。Entry小部件没有回调函数,但是它们有validatecommand,如果validate='focus',则可以以相同的方式工作。但是,解释器无法识别validatecommand函数中要修改的条目小部件。下面是我的最小示例:

import tkinter as tk

class app:
    def __init__(self,window):
        self.root = window

        self.tv1 = tk.DoubleVar(None,2)
        self.tv2 = tk.DoubleVar(None,3)
        self.tv3 = tk.DoubleVar(None,0)

        self.entry1 = tk.Entry(self.root, textvariable=self.tv1,
                               validate='focus', validatecommand=self.valid)
        self.entry2 = tk.Entry(self.root, textvariable=self.tv2,
                               validate='focus', validatecommand=self.valid)
        self.label1 = tk.Label(self.root, textvariable=self.tv3)

        self.entry1.pack()
        self.entry2.pack()
        self.label1.pack()

    def valid(self):
        self.tv3.set(self.tv1.get()*self.tv2.get())
        self.label1.config(fg='red')
        return True

main = tk.Tk()
win = app(main)
main.mainloop()

它回来了

AttributeError: 'app' object has no attribute 'label1'

这显然不是真的。你知道吗


Tags: selfnoneapp部件条目rootvalidatetk
1条回答
网友
1楼 · 发布于 2024-04-25 06:09:46

在创建标签之前,第一次调用validate命令。你知道吗

您可以通过在创建条目小部件之前创建标签来解决这个问题。你知道吗

相关问题 更多 >