下面是我遇到的情况:
from tkinter import *
from tkinter.ttk import *
root=Tk()
root.geometry('150x125+888+444')
var=StringVar()
var1=StringVar()
Entry_user1 = Entry(root, textvariable=var)
Entry_user1.grid(row=1)
Entry_user2 = Entry(root, textvariable=var1)
Entry_user2.grid(row=2)
Entry_user3 = Entry(root, textvariable=var1)
Entry_user3.grid(row=3)
我想用第3行来合并显示第一行和第二行输入的内容,但是用上面的代码没法实现,请问怎么才可以实现呢?第3行不用Entry用Label也可以,只要动态显示前两行组合的内容就可以,比如:
Entry_user1 第一行输入“南京”
Entry_user2 第二行输入“今天的天气”
Entry_user3 自动显示“南京今天的天气”
先上代码
from tkinter import *
root=Tk()
def test(content):
return content.isdigit()
testcmd=root.register(test)
root.geometry('150x125+888+444')
var=StringVar()
var1=StringVar()
var3=StringVar()
def sub_str() :
result=str(var.get())+str(var1.get())
var3.set(result)
return True
root.register(sub_str)
E1=Entry(root, textvariable=var,validate="all", validatecommand=sub_str)
E1.grid(row=1)
E2=Entry(root, textvariable=var1,validate="all", validatecommand=sub_str)
E2.grid(row=2)
Entry(root, textvariable=var3,state='readonly').grid(row=3)
root.mainloop()
解决思路 :
由于第一个输入框及第二个输入框未知,需要完成第三个框中显示var及var1的值拼接并实时更新。
那么,用户必要的操作是什么?是在第一/第二个框输入文本,即点击输入框,输入,选择下一个输入框。
也就产生了focusin,key,focusout等行为。我们需要在第三个框中指定一个新的变量,并且在用户做这些必要操作时赋给新的变量值。
也就是在E1、E2中的validatecommand (输入验证),验证节点我这里选的是ALL,其他方式也能做到。
至此就完成了主要目标,第三个框显示第一第二框内容之和,
我又试了一下,在sub_str(内容拼接方法)函数中必须返回True,才能使整个程序重复运行。
如果有用请采纳
以下答案引用自GPT-3大模型,请合理使用:
。
def merge(var1,var2):
temp = var1
var1 = var2
var2 = temp
root=Tk()
root.geometry('150x125+888+444')
var=StringVar()
var1=StringVar()
Entry_user1 = Entry(root, textvariable=var)
Entry_user1.grid(row=1)
Entry_user2 = Entry(root, textvariable=var1)
Entry_user2.grid(row=2)
Label_user3 = Label(root, textvariable=var1)
Label_user3.grid(row=3, columnspan=2)
如果我的回答解决了您的问题,请采纳我的回答
不知道你这个问题是否已经解决, 如果还没有解决的话: