2012-03-11 3 views
-1

я получаю ошибку «NameError: глобальное имя„entryWidget“не определен» в следующей части кода Python 3 Tkinter:Python 3 Ошибка: «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() 

Сам код предназначен для создания текстового поля (рядом с ним), кнопки ввода для текстового поля и кнопки выхода. Когда текст вводится в текстовое поле и вводится нажатие, появляется окно сообщения, сообщающее пользователю, что они ввели. Кнопка quit просто закрывает скрипт.

Как исправить ошибку, которую я получаю (я знаю, что означает ошибка, просто не знаю, как ее исправить в этом сценарии). Обратите внимание, что я новичок в коде tkinter и GUI.

ответ

3

А что-то вроде этого:

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

Работает отлично. Благодаря! –

0

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

+0

Затем я получаю следующую ошибку: 'TypeError: Невозможно преобразовать объект 'Entry' в str неявно. –

Смежные вопросы