Ошибка Python 3: «NameError: глобальное имя« entryWidget »не определено» - PullRequest
0 голосов
/ 11 марта 2012

Я получаю ошибку "NameError: глобальное имя 'entryWidget' не определено" в следующем фрагменте кода tkinter в Python 3:

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.

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

Что-то вроде этого:

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 здесь, поэтому я не могу проверить это.Но я надеюсь, что это поможет.

0 голосов
/ 11 марта 2012

Переместить определение displayText в метод createWidgets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...