Использование Tkinter Entry в классе не работает - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема, когда я помещаю свой код в класс, он не работает, но без класса он работает. Я пытаюсь получить ввод пользователя с помощью .get (), и после этого пользователь сможет выбрать файл. Все работает нормально без класса, но когда я помещаю код в класс, он говорит, когда я нажимаю кнопку «Выбрать файл» «Синтаксическая ошибка: inputbox.get not defined». Ошибка находится в строке 9. Это код, который я написал:

from tkinter import filedialog
from tkinter import *
from shutil import copyfile

class Firstpage:

    #Execute the following code when choose_button is clicked
    def button_action():
        entry_text = inputbox.get() #Error
        if (entry_text == ""):
            select_label.config(text="Please first enter a file name!")
        else:
            window.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jar files","*.jar"),("all files","*.*")))
                copyfile (window.filename, entry_text + ".jar")
                command=window.quit
            exit()

    window = Tk()
    window.title("Choose Custom JAR")

    # Instruction-Label
    instruct_label = Label(window, text="Choose a name for your custom JAR: ")

    select_label = Label(window)

    # Input
    inputbox = Entry(window, bd=5, width=40)

    #Button
    choose_button = Button(window, text="Choose File", command=button_action)


    # Components
    instruct_label.grid(row = 0, column = 0)
    inputbox.grid(row = 0, column = 1)
    choose_button.grid(row = 1, columnspan = 2)
    select_label.grid(row = 2, column = 0, columnspan = 2)

    mainloop()

Я новичок в классах в Python и Tkinter. Кто-нибудь может мне помочь? Я так понимаю, простого решения не нашел.

1 Ответ

0 голосов
/ 08 мая 2020

Проблема в том, что input_box не определена, потому что вы определяете ее в строке 27. Вам нужно определить ее раньше.

Кроме того, написанный вами код класса не нужен. Вы не делаете __init__, поэтому класс не нужен.

Итак, это будет ваш код:

from tkinter import filedialog
from tkinter import *
from shutil import copyfile

window = Tk()
window.title("Choose Custom JAR")
#Execute the following code when choose_button is clicked
inputbox = Entry(window, bd=5, width=40)
def button_action():
    entry_text = inputbox.get() #Error
    if (entry_text == ""):
        select_label.config(text="Please first enter a file name!")
    else:
        window.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jar files","*.jar"),("all files","*.*")))
        copyfile (window.filename, entry_text + ".jar")
        command=window.quit
        exit()

# Instruction-Label
instruct_label = Label(window, text="Choose a name for your custom JAR: ")

select_label = Label(window)

#Button
choose_button = Button(window, text="Choose File", command=button_action)


# Components
instruct_label.grid(row = 0, column = 0)
inputbox.grid(row = 0, column = 1)
choose_button.grid(row = 1, columnspan = 2)
select_label.grid(row = 2, column = 0, columnspan = 2)

window.mainloop()

Надеюсь, это решит вашу ошибку !!!

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