Получение NameError, пытающейся получить доступ к моему виджету tkinter в моей командной кнопке - PullRequest
0 голосов
/ 19 октября 2018

Я написал класс для моего графического интерфейса tkinter и по какой-то причине не могу получить доступ к виджету Entry, который я создал в функции обратного вызова моей кнопки:

import tkinter as tk

class MyGUI:
    def __init__(self, master):
        entry = tk.Entry(master)
        entry.pack()

        self.run = tk.Button(master, text="Run", command=self.run)
        self.run.pack()

    def run(self):
        print('Entry content is:', entry.get())

root = tk.Tk()
my_gui = MyGUI(root)
root.mainloop()

Код выдает NameError: name 'entry' is not defined.Что я делаю не так?

1 Ответ

0 голосов
/ 19 октября 2018

Вы забыли установить entry как атрибут в self, а также не получили к нему доступ из self.Кроме того, вы определяете self.run, а также метод def run(..), что приведет к тому, что метод для экземпляра будет перезаписан.Таким образом, вы должны переименовать его во что-то еще, например _run.

import tkinter as tk

class MyGUI:
    def __init__(self, master):
        <b>self.</b>entry = tk.Entry(master)
        <b>self.</b>entry.pack()

        self.<b>_run</b> = tk.Button(master, text="Run", command=self.run)
        self.<b>_run</b>.pack()

    def run(self):
        print('Entry content is:', <b>self.</b>entry.get())

root = tk.Tk()
my_gui = MyGUI(root)
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...