【问题标题】:Python 3 Error: "NameError: global name 'entryWidget' is not defined"Python 3 错误:“NameError:未定义全局名称‘entryWidget’”
【发布时间】:2012-03-28 03:23:15
【问题描述】:

我在以下 Python 3 tkinter 代码中收到错误“NameError: global name 'entryWidget' is not defined”:

from tkinter import *
import tkinter

def displayText():
    tkinter.messagebox.showinfo("Tkinter Entry Widget", "Text value =" + entryWidget)

class Application(Frame):

    def createWidgets(self):

        root.title("TITLE")

        textFrame = Frame(root)
        entryLabel = Label(textFrame)
        entryLabel["text"] = "Enter the text:"
        entryLabel.pack(side=LEFT)

        entryWidget = Entry(textFrame)
        entryWidget["width"] = 50
        entryWidget.pack(side=LEFT)
        textFrame.pack()
        button = Button(root, text="Submit", command=displayText)
        button.pack()

        self.QUIT = Button(self)
        self.QUIT["text"] = "QUIT"
        self.QUIT["fg"] = "red"
        self.QUIT["command"] = self.quit
        self.QUIT.pack()


    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

代码本身旨在创建一个文本框(旁边有文本)、一个文本框的输入按钮和一个退出按钮。当在文本框中输入文本并按下回车键时,应该会出现一个消息框,告诉用户他们输入的内容。退出按钮只是退出脚本。

如何解决我遇到的错误(我知道错误的含义,只是不知道如何在这种情况下解决它)。请注意,我是 tkinter 和 GUI 代码的新手。

【问题讨论】:

    标签: python user-interface python-3.x tkinter


    【解决方案1】:

    displayText 的定义移到createWidgets 方法中。

    【讨论】:

    • 然后我得到以下错误:TypeError: Can't convert 'Entry' object to str implicitly.
    【解决方案2】:

    这样的事情呢:

    from tkinter import *
    import tkinter
    
    
    class Application(Frame):
    
        def createWidgets(self):
    
            root.title("TITLE")
    
            textFrame = Frame(root)
            entryLabel = Label(textFrame)
            entryLabel["text"] = "Enter the text:"
            entryLabel.pack(side=LEFT)
    
            self.entryWidget = Entry(textFrame)
            self.entryWidget["width"] = 50
            self.entryWidget.pack(side=LEFT)
            textFrame.pack()
            button = Button(root, text="Submit", command=self.displayText)
            button.pack()
    
            self.QUIT = Button(self)
            self.QUIT["text"] = "QUIT"
            self.QUIT["fg"] = "red"
            self.QUIT["command"] = self.quit
            self.QUIT.pack()
    
        def displayText(self):
            tkinter.messagebox.showinfo("Tkinter Entry Widget", "Text value =" + self.entryWidget.get())
    
        def __init__(self, master=None):
            Frame.__init__(self, master)
            self.pack()
            self.createWidgets()
    
    root = Tk()
    app = Application(master=root)
    app.mainloop()
    root.destroy()
    

    我这里没有 tkinter,所以无法查看。但我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 1970-01-01
      • 2013-11-21
      • 2022-02-24
      • 1970-01-01
      • 2013-07-20
      • 2023-03-30
      相关资源
      最近更新 更多