Почему мои GUI входные значения дублируются в Tkinter? - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать простое приложение Tkinter, которое будет создавать папки в указанном каталоге. Например, если вы зададите ему префикс «folder_» и start = 1, end = 5, он создаст folder_1, folder_2, folder_3, folder_4, folder_5. Я могу выяснить эту логику c позже, но сейчас у меня возникают проблемы с пониманием, почему все, что я печатаю в поле «Пуск», дублируется в поле «Конец». Я создал тестовое поле ввода рядом с каталогом и увидел то же самое. Что мне не хватает?

Любая помощь будет высоко ценится

Редактировать: проблема была с объявлением переменных startN и endN = int (). Я изменил их на = IntVar (), и теперь, когда я печатаю в поле ввода GUI, я могу поставить разные значения для начала и конца.

[![Screensnip of GUI][1]][1]from tkinter import *
from tkinter import ttk
import folderNames as folders


root = Tk()
root.title("Create Folders")

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

directory = StringVar()
test = StringVar()
prefix = StringVar()
startN = int()
endN = int()

def calcFolders(*args):
    try:
        a = folders.getf(start_entry.get(), end_entry.get(), pref_entry.get())
        return(a)
    except ValueError:
        pass

dir_entry = ttk.Entry(mainframe, width=7, textvariable = directory)
dir_entry.grid(column=2, row=1, sticky=(W, E))

test_entry = ttk.Entry(mainframe, width=7, textvariable = test)
test_entry.grid(column=4, row=1, sticky=(W, E))

pref_entry = ttk.Entry(mainframe, width=7, textvariable = prefix)
pref_entry.grid(column=2, row=2, sticky=(W, E))

start_entry = ttk.Entry(mainframe, width=7, textvariable = startN)
start_entry.grid(column=2, row=3, sticky=(W, E))

end_entry = ttk.Entry(mainframe, width=7, textvariable = endN)
end_entry.grid(column=4, row=3, sticky=(W, E))

ttk.Label(mainframe, text="Directory").grid(column=1, row=1, sticky=E)
ttk.Label(mainframe, text="Prefix").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="Start").grid(column=1, row=3, sticky=E)
ttk.Label(mainframe, text="End").grid(column=3, row=3, sticky=E)
ttk.Button(mainframe, text="CREATE", command=calcFolders()).grid(column=1, row=4, sticky=N)



for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)

dir_entry.focus()
root.bind('<Return>', calcFolders())

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