python - 如何在 python 3.8 中从 tkinter 中的文本获取输入
问题描述
我想从 python 中的 tkinter.Text 对象获取输入
msg = tkinter.StringVar()
message = tkinter.Entry(mainframe, textvariable=msg)
但它给出了一个错误
我也试过get方法
thetext = message.get('1.0', 'end')
但它给出了这个错误:
return self.tk.call(self._w, 'get', index1, index2)
_tkinter.TclError: invalid command name ".!text"
解决方案
当您关闭(销毁)窗口时,它也会删除(销毁)Entry
(和其他小部件),当您尝试使用Entry
. Entry
您必须在关闭(销毁)窗口之前获取文本。
或者
因为您使用StringVar
in所以即使在关闭(销毁)窗口后Entry
也可以从中获取此文本。StringVar
显示此问题和解决方案的最小工作示例。
import tkinter as tk
# --- functions ---
def on_click():
global result
result = entry.get()
print('[before] result :', result) # OK - before destroying window
print('[before] StringVar:', msg.get()) # OK - before destroying window
print('[before] Entry :', entry.get()) # OK - before destroying window
root.destroy()
# --- main ---
result = "" # variable for text from `Entry`
root = tk.Tk()
msg = tk.StringVar(root)
entry = tk.Entry(root, textvariable=msg)
entry.pack()
button = tk.Button(root, text='Close', command=on_click)
button.pack()
root.mainloop()
# --- after closing window ---
print('[after] result :', result) # OK - after destroying window
print('[after] StringVar:', msg.get()) # OK - after destroying window
print('[after] Entry :', entry.get()) # ERROR - after destroying window
推荐阅读
- android - 给定一个 APK 文件,是否有可能知道它是拆分 APK 文件的一部分,还是独立的?
- isabelle - Isabelle/Pure Isabelle/HOL Isabelle/Isar 概念问题
- angularjs - Angular:使用 $q.all 作为可选承诺?
- mediaelement.js - MediaElements Video 组件自动翻译字幕不起作用
- python - 为什么 if 语句中带有数字的“if 语句”不起作用并且没有运行并且在 python 3.7.2 中的语句之后停止?
- python - 如何抓取每个搜索项的结果并返回?
- elixir - 工人在主管中启动后退出
- debugging - API KEY:在 macOS 上通过 Brew 重新插入 Cointop
- android - Unity proguard:任务“:transformClassesAndResourcesWithProguardForRelease”执行失败
- angular - 角度形式在原始时显示错误