繁体   English   中英

将Tkinter文本框条目转换为Python变量

[英]Convert Tkinter textbox entry into Python Variable

(长问题)

我正在尝试编写一段代码,当按下按钮时,它将使用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()

我在这里先向您的帮助表示感谢。

您似乎对范围,导入,引用和功能有一些误解。 myvar已经可以访问了,访问它所要做的就是get() it。 不要多次导入同一模块,并尽量避免from x import * 将值返回给按钮没有任何意义,也没有任何作用。 不在函数或类中的每一行代码都将立即执行,因此attempt = mywarWritten()以及您在函数外部所做的所有其他几次操作都会在程序运行后立即获取StringVar的值,然后再执行任何操作在里面。 lambda: func()只是func

import Tkinter as tk

root = tk.Tk()
root.title("MyApp")

myvar = tk.StringVar()

def mywarWritten(*args):
    print "mywarWritten", myvar.get()

label = tk.Label(root, textvariable=myvar)
label.pack()

text_entry = tk.Entry(root, textvariable=myvar)
button1 = tk.Button(root, text="Back to Home", command=mywarWritten) 
button1.pack()
text_entry.pack()

root.mainloop()

每当您要访问该条目小部件的内容时,只需执行myvar.get()

您还可以使用mywarWritten而不是my_var_written ,其中v表示var

总的来说,我强烈建议您阅读官方的Python教程 (并使用Python 3,因为它比Python 2更好)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM