Tkinter的文本框总内容如何保存成变量再使用
看过很多都是button绑定个函数,可以打印,可以输出到文本,但如何将这个变量返回呢?这个函数单独调用也不可能,我做过的唯一是在关闭窗口后可以保存,但那不是我想要的 没看懂,tkinter没用过,只用过pyside2,但应该也有textchange的动作事件吧,绑定动作事件,一旦文本内容发生改变,就把text内容保存到变量就行了 没看懂你的需求类似这样呗?
from tkinter import *
def set_value():
global result
result = text.get(0.0,END)
print(result)
root = Tk()
text = Text(root)
text.pack(padx=5,pady=5)
Button(root,text='获取内容,赋值变量',command=set_value).pack(padx=5,pady=5)
result = None
mainloop() Twilight6 发表于 2020-8-28 12:41
类似这样呗?
你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来 sunrise085 发表于 2020-8-28 12:10
没看懂你的需求
input接收键盘输入保存到变量,我这个用text文本框接收键盘输入保存成一个变量来使用 cdzjf 发表于 2020-8-28 13:13
你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来
这个就直接可以使用了啊,这里已经达到你的需求了,我只是没有写使用而已 cdzjf 发表于 2020-8-28 13:13
你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来
from tkinter import *
def set_value():
global result
result = text.get(0.0, END)
print(result)
def set():
v.set(result)
root = Tk()
v = StringVar()
text = Text(root)
text.pack(padx=5, pady=5)
Button(root, text='获取内容,赋值变量', command=set_value).pack(padx=5, pady=5)
Button(root, text='设置变量', command=set).pack(padx=5,pady=5)
Label(root,textvariable=v).pack(padx=5,pady=5)
result = None
mainloop()
Twilight6 发表于 2020-8-28 20:55
result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊 cdzjf 发表于 2020-8-30 10:27
result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊
你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊 Twilight6 发表于 2020-8-30 12:03
你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊
我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊 cdzjf 发表于 2020-8-30 14:13
我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊
代码运行时候在次调用要使用线程啊,否则你代码实际上主线程已经执行完毕了,肯定不能调用的啊
而且我这里设置 Label 的 text 值就是在函数外调用 result 啊,你基础还有待提高呀
from tkinter import *
from threading import Thread
from time import sleep
def set_value():
global result
result = text.get(0.0, END)
print(result)
def set():
v.set(result)
root = Tk()
v = StringVar()
text = Text(root)
text.pack(padx=5, pady=5)
Button(root, text='获取内容,赋值变量', command=set_value).pack(padx=5, pady=5)
Button(root, text='设置变量', command=set).pack(padx=5,pady=5)
Label(root,textvariable=v).pack(padx=5,pady=5)
result = None
def run():
while True:
print(f'result当前的值为:{result}')
sleep(1)
t = Thread(target=run)
t.start()
mainloop()
页:
[1]