[英]How to assign a inputted string to a variable ONLY when a button is clicked?
问题:我正在制作一个小 GUI 程序,使用 tkinter 自动将给定扩展名的所有文件从提供的源位置备份到提供的目标位置。 为了从用户那里获取源和目标位置,我添加了 tkinter 条目小部件及其各自的 CONFIRM 按钮,单击这些小部件时,应将输入框中的文本分配给相应的变量。
我尝试了什么:我在单独的函数中编写代码,因此有一个单独的 function 用于创建获取源位置、目标位置、扩展名等的小部件。在函数中,我定义了其他buttonClick
(按钮单击),这是命令按钮小部件。 源变量、目标变量预设为空字符串。 function 是这样的:
def buttonClick():
global destination
destination = destinationEntry.get()
但是这里分配的这个目标值在这个 function 之外是不可用的,即使在声明它是全局的之后也是如此。 destinationEntry
是获取文件最终位置的入口小部件。
编辑:最小代码->
import tkinter as tk
source = 'example'
def sourceWidgets(master):
labelFrame = tk.LabelFrame(master)
labelFrame.grid(column=0, row=0)
sourceEntry = tk.Entry(labelFrame, width=28)
sourceEntry.grid(column=0, row=0)
def buttonClick():
global source
source = sourceEntry.get()
confirmButton = tk.Button(labelFrame, text=' Confirm ', command=buttonClick)
confirmButton.grid(column=1, row=0)
def main():
window = tk.Tk()
sourceWidgets(window)
print(source)
window.mainloop()
print(source)
if __name__ == '__main__':
main()
当您调用window.mainloop()
您的程序在此循环中,并且仅在此循环中,只要您的 window 是打开的。 因此,甚至在您的 window 打开之前调用第一个打印语句,并在 window 关闭时调用第二个打印语句。
您必须使用mainloop () 中的变量。 例如打印buttonClick()
function 中的值。
另一种方法是使用tk.StringVar()
作为输入字段的 text_variable 并跟踪变量。 这样,您可以编写一个回调 function ,每次变量更改时都会调用该回调。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.