我想知道如何在单击按钮后更改标签文本。例如:
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)'`
我想在单击按钮后将这些标签
username
和 password
以及输入字段更改为另一个不同的标签。我怎么做?
“如何在按下按钮时执行任何操作”的答案应该在任何教程中。
例如在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
,请删除/隐藏 Entry
(widget.pack_forget()
) 或销毁它 (widget.destroy()
) 并创建 Label
。
btw:您可以禁用
Entry
而不是创建 Label
(ent.config(state='disabled')
)
编辑:我删除了
lbl.["text"]
中的点
在编写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程序员。 如果我错了,请原谅并纠正我! 干杯!
动态更改标签的另一种方法。这里我们使用 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()
这是我创建一个带有标签的基本 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()
这应该有效:
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()
这是一个简单的骰子滚轮。 在 on_click 函数中,您将看到 label5 文本正在更改为掷骰子的内容,您可以多次单击该按钮,并使标签每次都发生更改。我知道这个问题已经被回答过多次,但没有人建议 label["text"] = "some text"。所以我将其添加为答案,因为它有效:
from tkinter import *
import random
root = Tk()
root.title("Die Roller")
entry1 = Entry(root, width = 5)
entry2 = Entry(root, width = 5)
def on_click():
r = 0
for z in range(0, int(entry1.get())):
r += random.randint(1, int(entry2.get()))
label5["text"] = r
label1 = Label(root, text = "Die Roller!")
label2 = Label(root, text = "Number of Die")
label3 = Label(root, text = "Number of Sides")
label4 = Label(root, text = "Total")
label5 = Label(root, text = " ")
button = Button(root, text = "Roll", command = on_click)
label1.grid(column = 1, row = 0)
label2.grid(column = 0, row = 1)
label3.grid(column = 0, row = 2)
entry1.grid(column = 2, row = 1)
entry2.grid(column = 2, row = 2)
label4.grid(column = 0, row = 4)
label5.grid(column = 2, row = 4)
button.grid(column = 1, row = 3)
root.mainloop()