在Tkinter中按下按钮后更新标签文本

9
我在想如何在点击按钮后更改标签文本。例如:
from Tkinter import *
import tkMessageBox

def onclick():
    pass

root = Tk()

root.title("Pantai Hospital")

L1 = Label(root, text='Welcome to Pantai Hospital!')
L1.pack() 
L2 = Label(root, text='Login')
L2.pack() 

L3 = Label(root, text = "Username:")
L3.pack( side = LEFT, padx = 5, pady = 10)
username = StringVar()
E1 = Entry(root, textvariable = username, width = 40)
E1.pack ( side = LEFT)

L4 = Label(root, text = "Password:")
L4.pack( side = LEFT, padx = 5, pady = 10)
password = StringVar() 
E2 = Entry(root, textvariable = password, show = "*", width = 40)    
E2.pack( side = LEFT)'`

我想在点击按钮后将标签用户名密码以及输入框中的内容更改为其他不同的标签。我该如何做?


将任务分为两部分:1. 如何在按下按钮时执行任何操作(例如,print("something"))?2. 如何更改标签文本? - jfs
首先创建按钮 ;) - furas
5个回答

13

"如何在按下按钮时执行任何操作"的答案应该在任何教程中都有涉及。
例如,在effbot书中:Button

使用 command= 将函数名分配给按钮。

(顺便说一句:函数名(或回调)意味着没有括号和参数的名称)

"

btn = Button(root, text="OK", command=onclick)

任何教程都应该包含有关“如何更改标签文本”的答案。


lbl = Label(root, text="Old text")

# change text

lbl.config(text="New text")

# or

lbl["text"] = "New text"

如果您想将Entry更改为Label,那么请移除/隐藏Entrywidget.pack_forget())或销毁它(widget.destroy()),然后创建Label
顺便说一下:您可以禁用Entry而不是创建Labelent.config(state='disabled'))。 编辑:我从lbl.["text"]中删除了点号。

谢谢!这非常有帮助。 - Yeo Jin
1
lbl.["text"] 需要改为 lbl["text"]。谢谢。 - Tonmoy

3
在你编写button.pack()之后编写lbl.pack()。这是一个小代码片段,用于在单击按钮时显示值的更改。这样做是为了在执行按钮点击后显示标签中所做的更改。
    from tkinter import *

    root = Tk(className = "button_click_label")
    root.geometry("200x200")

    message = StringVar()
    message.set('hi')

    l1 = Label(root, text="hi")


    def press():
        l1.config(text="hello")

    b1 = Button(root, text = "clickhere", command = press).pack()

    l1.pack()

    root.mainloop()

我只是一名初级的Python程序员。 如果我有错误之处,请您谅解并纠正! 谢谢!


2

另一种动态更改标签的方法。这里我们使用lambda来显示对标签显示的多个调整。如果您想进行一个标签更改,只需忽略lambda并在没有参数的情况下调用该函数(在这种情况下为1和2)。记得在创建标签时确保分离.pack方法以供此用途,否则当函数尝试使用.pack方法配置行时会出现错误。

from tkinter import *  

root = Tk(className = "button_click_label")  
root.geometry("200x200")
  
def press(x):  
    if x == 1:  
        l1.config(text='hello')    
    else:    
        l1.config(text='hi')  

b1 = Button(root, text = "click me", command = lambda:press(1)).pack()  
b2 = Button(root, text = 'click me', command = lambda:press(2)).pack()

l1 = Label(root, text="waiting for click")  
l1.pack()

root.mainloop()

1

这是一个示例,我创建了一个基本的 GUI 界面,并添加了一个标签。然后我更改了标签的文本内容。

import tkinter as tk
from tkinter import *
app = tk.Tk()
#creating a Label
label = Label(app,  text="unchanged")
label.pack()
#updating text 
label.config(text="changed")
app.mainloop()

0

这应该可以工作:

from tkinter import *

root = Tk(className = "button_click_label")
root.geometry("200x200")

message = StringVar()
message.set('hi')

l1 = Label(root, text="hi")
l1.pack()

def press():
    l1.config(text="hello")

b1 = Button(root, text = "clickhere", command = press).pack()

root.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接