unl*_*kme 19 python events tkinter tkinter-entry
我正在尝试Entry
使用tkinter
模块使用GUI中的按钮设置窗口小部件的文本.
该GUI用于帮助我将数千个单词分为五类.每个类别都有一个按钮.我希望使用一个按钮会显着加快我的速度,我想每次都仔细检查这些单词,否则我只会使用按钮并让GUI处理当前单词并带来下一个单词.
由于某种原因,命令按钮的行为不像我想要的那样.这是一个例子:
win = Tk()
v = StringVar()
def setText(word):
v.set(word)
a = Button(win, text="plant", command=setText("plant")
a.pack()
b = Button(win, text="animal", command=setText("animal"))
b.pack()
c = Entry(win, textvariable=v)
c.pack()
win.mainloop()
Run Code Online (Sandbox Code Playgroud)
到目前为止,当我能够编译时,点击什么都不做.
Mil*_*ála 55
您可能想要使用insert
方法.
此脚本将文本插入Entry
.可以command
在Button的参数中更改插入的文本.
from tkinter import *
def set_text(text):
e.delete(0,END)
e.insert(0,text)
return
win = Tk()
e = Entry(win,width=10)
e.pack()
b1 = Button(win,text="animal",command=lambda:set_text("animal"))
b1.pack()
b2 = Button(win,text="plant",command=lambda:set_text("plant"))
b2.pack()
win.mainloop()
Run Code Online (Sandbox Code Playgroud)
Buv*_*inJ 12
如果你使用"文本变量" tk.StringVar()
,你可以set()
这样做.
无需使用Entry删除和插入.此外,当禁用或只读条目时,这些功能不起作用!但是,文本变量方法也可以在这些条件下工作.
import Tkinter as tk
...
entryText = tk.StringVar()
entry = tk.Entry( master, textvariable=entryText )
entryText.set( "Hello World" )
Run Code Online (Sandbox Code Playgroud)
您可以在以下两种方法之间进行选择,以设置Entry
小部件的文本。对于示例,假设已导入库import tkinter as tk
和根窗口root = tk.Tk()
。
方法A:使用delete
和insert
插件Entry
提供的方法delete
和insert
可用于给它的文本设置为一个新值。首先,您必须删除所有以前的旧文本,Entry
并delete
从中需要开始和结束删除的位置。由于我们要删除完整的旧文本,因此我们从0
当前结束的任何地方开始并结束。我们可以通过访问该值END
。之后,该字段Entry
为空,我们可以new_text
在位置插入0
。
entry = tk.Entry(root)
new_text = "Example text"
entry.delete(0, tk.END)
entry.insert(0, new_text)
Run Code Online (Sandbox Code Playgroud)方法B:使用 StringVar
您必须创建一个在示例中StringVar
称为的新对象entry_text
。另外,Entry
必须使用关键字arguments创建小部件textvariable
。之后,每次使用更改entry_text
时set
,文本将自动显示在Entry
小部件中。
entry_text = tk.StringVar()
entry = tk.Entry(root, textvariable=entry_text)
new_text = "Example text"
entry_text.set(new_text)
Run Code Online (Sandbox Code Playgroud)完整的工作示例,其中包含通过Button
以下方法设置文本的两种方法:
这个窗口
由以下完整的工作示例生成:
import tkinter as tk
def button_1_click():
# define new text (you can modify this to your needs!)
new_text = "Button 1 clicked!"
# delete content from position 0 to end
entry.delete(0, tk.END)
# insert new_text at position 0
entry.insert(0, new_text)
def button_2_click():
# define new text (you can modify this to your needs!)
new_text = "Button 2 clicked!"
# set connected text variable to new_text
entry_text.set(new_text)
root = tk.Tk()
entry_text = tk.StringVar()
entry = tk.Entry(root, textvariable=entry_text)
button_1 = tk.Button(root, text="Button 1", command=button_1_click)
button_2 = tk.Button(root, text="Button 2", command=button_2_click)
entry.pack(side=tk.TOP)
button_1.pack(side=tk.LEFT)
button_2.pack(side=tk.LEFT)
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
97309 次 |
最近记录: |