【发布时间】:2017-05-15 07:46:10
【问题描述】:
(长问题)
我正在尝试编写一段代码,当按下按钮时,它将使用 tkinter 文本框从用户那里获取文件路径。然后它会将该文本框条目转换为附加到普通 python 变量的字符串,以便稍后我可以在函数中使用该变量来使用该文件。我附加的代码可以使标签复制文本框条目,但我不能在“普通 python 代码”中使用该变量或 myvar。此外,在代码中,我尝试通过函数 mywarWritten 返回 myvar.get(),但我无法设置等于 mywarWritten(parameters) 的变量,因为这取决于在按下按钮之前不会发生的文本框条目。按下按钮时,打印功能可以打印语句,但当功能设置为尝试时,它不会返回。
(简而言之)
我想使用 Tkinter 文本框从用户那里获取一个值或字符串,并将该条目用作普通的 Python 变量。最好仅在按下按钮时才获取文本框中的值。
from Tkinter import *
import Tkinter as tk
root = Tk()
root.title("MyApp")
myvar = StringVar()
def mywarWritten(*args):
print "mywarWritten",myvar.get()
please = myvar.get()
return please
#trying to make the function return the textbox entry but fails
attempt = mywarWritten()
print "plz %s" % (attempt)
#trying to just set it equal too but also fails
python_variable = myvar.get()
label = Label(root, textvariable=myvar)
label.pack()
text_entry = tk.Entry(root, textvariable=myvar)
button1 = tk.Button(root, text="Back to Home", command=lambda: mywarWritten())
button1.pack()
text_entry.pack()
#trying attempt and pythonvariable in "normal python code"
print attempt
print pythonvariable
root.mainloop()
提前感谢您的帮助。
【问题讨论】:
-
分配给按钮的函数无法返回值,因为没有人可以接收此变量。行
attempt = ...和python_variable = ...是无用的,因为当Entry仍然为空时,它们在脚本开始时执行。您必须了解,只有分配给Button或其他小部件的函数内部的代码才有意义。函数之外的所有内容都只执行一次 - 在脚本开始时 - 并且仅用于构建 GUI。 -
谢谢你,这很有意义。因此,与其尝试将文本输入带出,不如将与按钮相关的功能(未显示)带入正确?
-
是的,你必须在函数内部做所有事情。
-
谢谢 furas,我期待着明天早上试试这个。
标签: python python-2.7 tkinter