首页 > 解决方案 > 为什么我的 GUI 输入值在 Tkinter 中重复?

问题描述

我正在尝试创建一个简单的 Tkinter 应用程序,它将在指定目录中创建文件夹。例如,如果你给它前缀“folder_”并且start = 1,end = 5,它将创建folder_1,folder_2,folder_3,folder_4,folder_5。我稍后可以弄清楚这个逻辑,但现在我无法理解为什么我在“开始”输入框中输入的任何内容都会在“结束”输入框中重复。我在目录旁边创建了一个测试条目框,并看到了同样的东西。我错过了什么?

任何帮助将非常感激

编辑:问题在于声明变量 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()

标签: pythontkinter

解决方案


推荐阅读