cdzjf 发表于 2020-8-28 11:11:39

Tkinter的文本框总内容如何保存成变量再使用

看过很多都是button绑定个函数,可以打印,可以输出到文本,但如何将这个变量返回呢?这个函数单独调用也不可能,我做过的唯一是在关闭窗口后可以保存,但那不是我想要的

疾风怪盗 发表于 2020-8-28 11:28:38

没看懂,tkinter没用过,只用过pyside2,但应该也有textchange的动作事件吧,绑定动作事件,一旦文本内容发生改变,就把text内容保存到变量就行了

sunrise085 发表于 2020-8-28 12:10:05

没看懂你的需求

Twilight6 发表于 2020-8-28 12:41:44


类似这样呗?

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()

cdzjf 发表于 2020-8-28 13:13:18

Twilight6 发表于 2020-8-28 12:41
类似这样呗?

你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来

cdzjf 发表于 2020-8-28 13:20:38

sunrise085 发表于 2020-8-28 12:10
没看懂你的需求

input接收键盘输入保存到变量,我这个用text文本框接收键盘输入保存成一个变量来使用

Twilight6 发表于 2020-8-28 20:43:20

cdzjf 发表于 2020-8-28 13:13
你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来



这个就直接可以使用了啊,这里已经达到你的需求了,我只是没有写使用而已

Twilight6 发表于 2020-8-28 20:55:08

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()

cdzjf 发表于 2020-8-30 10:27:06

Twilight6 发表于 2020-8-28 20:55


result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊

Twilight6 发表于 2020-8-30 12:03:12

cdzjf 发表于 2020-8-30 10:27
result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊

你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊

cdzjf 发表于 2020-8-30 14:13:02

Twilight6 发表于 2020-8-30 12:03
你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊

我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊

Twilight6 发表于 2020-8-30 18:05:09

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]
查看完整版本: Tkinter的文本框总内容如何保存成变量再使用