鱼C论坛

 找回密码
 立即注册
查看: 2678|回复: 11

[已解决]Tkinter的文本框总内容如何保存成变量再使用

[复制链接]
发表于 2020-8-28 11:11:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看过很多都是button绑定个函数,可以打印,可以输出到文本,但如何将这个变量返回呢?这个函数单独调用也不可能,我做过的唯一是在关闭窗口后可以保存,但那不是我想要的
最佳答案
2020-8-30 18:05:09
cdzjf 发表于 2020-8-30 14:13
我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊



代码运行时候在次调用要使用线程啊,否则你代码实际上主线程已经执行完毕了,肯定不能调用的啊

而且我这里设置 Label 的 text 值就是在函数外调用 result 啊,你基础还有待提高呀

  1. from tkinter import *
  2. from threading import Thread
  3. from time import sleep


  4. def set_value():
  5.     global result
  6.     result = text.get(0.0, END)
  7.     print(result)

  8. def set():
  9.     v.set(result)

  10. root = Tk()

  11. v = StringVar()

  12. text = Text(root)
  13. text.pack(padx=5, pady=5)

  14. Button(root, text='获取内容,赋值变量', command=set_value).pack(padx=5, pady=5)
  15. Button(root, text='设置变量', command=set).pack(padx=5,pady=5)

  16. Label(root,textvariable=v).pack(padx=5,pady=5)

  17. result = None

  18. def run():
  19.     while True:
  20.         print(f'result当前的值为:{result}')
  21.         sleep(1)

  22. t = Thread(target=run)
  23. t.start()

  24. mainloop()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-28 11:28:38 | 显示全部楼层
没看懂,tkinter没用过,只用过pyside2,但应该也有textchange的动作事件吧,绑定动作事件,一旦文本内容发生改变,就把text内容保存到变量就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-28 12:10:05 | 显示全部楼层
没看懂你的需求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-28 12:41:44 | 显示全部楼层

类似这样呗?

  1. from tkinter import *

  2. def set_value():
  3.     global result
  4.     result = text.get(0.0,END)
  5.     print(result)


  6. root = Tk()

  7. text = Text(root)
  8. text.pack(padx=5,pady=5)

  9. Button(root,text='获取内容,赋值变量',command=set_value).pack(padx=5,pady=5)

  10. result = None

  11. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-28 13:13:18 | 显示全部楼层

你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-28 13:20:38 | 显示全部楼层

input接收键盘输入保存到变量,我这个用text文本框接收键盘输入保存成一个变量来使用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



这个就直接可以使用了啊,这里已经达到你的需求了,我只是没有写使用而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-28 20:55:08 | 显示全部楼层
cdzjf 发表于 2020-8-28 13:13
你说的这个和我说的一样,result 在函数里,在函数外怎么使用这个result 变量,你这个只能打印出来

  1. from tkinter import *


  2. def set_value():
  3.     global result
  4.     result = text.get(0.0, END)
  5.     print(result)

  6. def set():
  7.     v.set(result)

  8. root = Tk()

  9. v = StringVar()

  10. text = Text(root)
  11. text.pack(padx=5, pady=5)

  12. Button(root, text='获取内容,赋值变量', command=set_value).pack(padx=5, pady=5)
  13. Button(root, text='设置变量', command=set).pack(padx=5,pady=5)

  14. Label(root,textvariable=v).pack(padx=5,pady=5)

  15. result = None

  16. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 10:27:06 | 显示全部楼层

result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 12:03:12 From FishC Mobile | 显示全部楼层
cdzjf 发表于 2020-8-30 10:27
result这个变量始终在函数内部,想在其他地方,也就是函数外调用都不可以啊

你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 14:13:02 | 显示全部楼层
Twilight6 发表于 2020-8-30 12:03
你是没理解全局变量和局部变量吧 这里的 result 为全局变量啊

我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 18:05:09 | 显示全部楼层    本楼为最佳答案   
cdzjf 发表于 2020-8-30 14:13
我知道是全局变量,但我用你的代码,在函数外没法调用这个变量啊



代码运行时候在次调用要使用线程啊,否则你代码实际上主线程已经执行完毕了,肯定不能调用的啊

而且我这里设置 Label 的 text 值就是在函数外调用 result 啊,你基础还有待提高呀

  1. from tkinter import *
  2. from threading import Thread
  3. from time import sleep


  4. def set_value():
  5.     global result
  6.     result = text.get(0.0, END)
  7.     print(result)

  8. def set():
  9.     v.set(result)

  10. root = Tk()

  11. v = StringVar()

  12. text = Text(root)
  13. text.pack(padx=5, pady=5)

  14. Button(root, text='获取内容,赋值变量', command=set_value).pack(padx=5, pady=5)
  15. Button(root, text='设置变量', command=set).pack(padx=5,pady=5)

  16. Label(root,textvariable=v).pack(padx=5,pady=5)

  17. result = None

  18. def run():
  19.     while True:
  20.         print(f'result当前的值为:{result}')
  21.         sleep(1)

  22. t = Thread(target=run)
  23. t.start()

  24. mainloop()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 12:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表