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

2024-05-17 00:01:59 发布

您现在位置:Python中文网/ 问答频道 /正文

(长问题)

我正在尝试编写一段代码,当一个按钮被按下时,它将使用tkinter文本框从用户那里获取一个文件路径。然后,它会将textbox条目转换为附加到普通python变量的字符串,这样我就可以在以后的函数中使用该变量来使用该文件。我附加的代码可以使标签复制文本框条目,但我不能在“普通python代码”中使用该变量或myvar。另外,在代码中我尝试返回我的宝贝()通过函数mywarwrited,但我不能设置一个等于mywarwrited(参数)的变量,因为这取决于textbox条目,该条目直到按钮被按下才发生。按下按钮时,打印功能可以打印语句,但当函数设置为“尝试”时,不会返回“请”。在

(简而言之)

我想从使用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()

提前谢谢你的帮助。在


Tags: 函数代码gettkinter条目root按钮tk
1条回答
网友
1楼 · 发布于 2024-05-17 00:01:59

您似乎对范围、导入、引用和函数有一些误解。myvar已经可以访问,要访问它,只需get()它。不要多次导入同一个模块,并尽量避免from x import *。向按钮返回值没有任何意义,也没有任何效果。不在函数或类中的每一行代码都会立即执行,因此attempt = mywarWritten()以及在函数外执行的所有其他几行代码都将在程序运行后立即获得{}的值,而程序中没有任何内容。而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表示{}。在

总之,我强烈建议您阅读official Python tutorial(并使用Python3,因为它比Python2更好)。在

相关问题 更多 >