Python 3 错误:"NameError: global name 'entryWidget' is not defined"



我在以下Python 3 tkinter代码中得到错误"NameError:全局名称'entryWidget'未定义":

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代码的新手。

类似的东西呢:

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,所以我不能检查它。但我希望它会有所帮助。

displayText的定义移动到createWidgets方法中。

相关内容

最新更新