首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter NameError

Tkinter NameError
EN

Stack Overflow用户
提问于 2021-03-15 19:09:31
回答 1查看 44关注 0票数 0

我试图制作一个简单的程序,它可以选择程序并启动它们,但是当我从列表中选择一个porgram时,它会给出一个名称错误。

代码语言:javascript
复制
from tkinter import *

class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self,master)
        self.pack(fill=BOTH, expand=1)

        var=IntVar

        example=Checkbutton(self, text="example", variable=var, onvalue=1, offvalue=0, command=self.example)
        example.place(x=0,y=0)
        
    def example(self):
        if (example.get() == 1):
            print("1")
        elif (example.get() == 0):
            print("0")

root=Tk()
app=Window(root)
root.geometry("220x120")
root.resizable(width=False, height=False)
root.mainloop()

当我运行它时,它可以正常工作,但是单击复选框就会产生错误。

NameError:未定义名称“示例”

我试过用不同的关键字搜索,但没有找到解决方案。我所取得的唯一进展是将(self)def example后面移除,这给出了以下错误

TypeError:例()接受0个位置参数,但给出了1

如有任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-15 19:30:08

您的代码存在一些问题:

正如注释中指出的那样,为了使self.example.

  • in在方法中可见,要么必须全局声明example,要么必须执行visible.

  • finally,命令才能执行get(),您希望使用IntVar var,而不是使用复选框本身。再一次,var需要是self.var是visible.

  • finally,var需要是IntVar的实例,所以您需要括号:var = IntVar()

总之,随着这些修改的实施,将是:

代码语言:javascript
复制
from tkinter import *

class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self,master)
        self.pack(fill=BOTH, expand=1)

        self.var=IntVar()

        example=Checkbutton(self, text="example", variable=self.var, onvalue=1, offvalue=0, command=self.example)
        example.place(x=0,y=0)
        
    def example(self):
        if (self.var.get() == 1):
            print("1")
        elif (self.var.get() == 0):
            print("0")

root=Tk()
app=Window(root)
root.geometry("220x120")
root.resizable(width=False, height=False)
root.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66644207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档