python - python入口小部件和get方法
问题描述
有没有办法将文本变量放在另一个变量中而不必使用“.get()”?我一直在做很多筛选教程和文章,因为我意识到这是一个非常小的问题,但我可能误解了一些非常关键的东西,所以我希望有人可以帮助我为入口小部件和 .get 开发一些直觉() 方法。
下面是我一直在处理的脚本的一部分,我想在其中获取输入框中输入的文本并稍后使用它。如果我使用 ,我可以使用它search_word.get()
,但我不知道为什么我不能做类似 的事情New_variable=search_word.get()
,这样从那时起我就可以使用“New_variable”。
import tkinter as tk
from tkinter import *
from tkinter import ttk
Text_input_window = Tk()
Text_input_window.geometry('600x350+100+200')
Text_input_window.title("Test")
label_1=ttk.Label(Text_input_window, text="Enter word to search:", background="black", foreground="white")
label_1.grid(row=1, column=0, sticky=W)
search_word=StringVar()
entry_1=ttk.Entry(Text_input_window,textvariable=search_word, width=40, background="white")
entry_1.grid(row=2, column=0, sticky=W)
New_variable=StringVar()
New_variable=search_word.get()
def click():
print(New_variable)
print(search_word.get())
Text_input_window.destroy()
btn_1=ttk.Button(Text_input_window, text="submit", width=10, command=click)
btn_1.grid(row=3, column=0, sticky=W)
Text_input_window.mainloop()
解决方案
问题不.get()
在于所有 GUI 是如何工作的。
mainloop()
启动程序,所以new_variable = search_word.get()
在你看到窗口之前就执行了——所以它会在你输入文本之前尝试获取文本Entry
。
您必须在click()
其中输入文本并单击按钮后执行它。
import tkinter as tk
# --- functions ---
def click():
global new_variable # inform function to use external/global variable instead of creating local one
#new_variable = entry.get() # you can get it directly from `Entry` without StringVar()
new_variable = search_word.get()
root.destroy()
# --- main ---
new_variable = '' # create global variable with default value
root = tk.Tk()
search_word = tk.StringVar()
entry = tk.Entry(root, textvariable=search_word)
entry.pack()
btn = tk.Button(root, text="submit", command=click)
btn.pack()
root.mainloop() # start program
# --- after closing window ---
print('new_variable:', new_variable)
print('search_word:', search_word.get()) # it seems it still exists
# print('entry:', entry.get()) # `Entry` doesn't exists after closing window so it gives error
推荐阅读
- android - 如何在 RowHeaderPresenter 中设置选中、未选中的标题标题颜色
- r - 根据条件 R 删除 DataFrame 中的值
- spring-boot - Spring Boot 2 和 Cors 过滤器
- sql - 表 SQL 中两列的总和
- android - 是否可以从活动屏幕截取渲染的街景全景视图?
- mongodb - 从 mongodb Azure Cosmos DB 生成报告时出错
- c# - 允许应用程序角色执行 DBCC CHECKDB
- java - Jetty9 JSR356 WebSocket 客户端 - UpgradeException 问题
- c++ - C++ 用枚举类对象分配 std::map 值
- java - 需要有关百分比计算器项目的帮助