【问题标题】:Update label text after pressing a button in Tkinter在 Tkinter 中按下按钮后更新标签文本
【发布时间】:2016-01-09 05:05:05
【问题描述】:

我想知道如何在单击按钮后更改标签文本。例如:

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)'`

我想在单击按钮后将这些标签 usernamepassword 以及输入字段更改为另一个不同的标签。我怎么做?

【问题讨论】:

  • 将任务一分为二: 1. 如何在按下按钮时执行任何操作(例如,print("something"))? 2.如何更改标签文字?
  • 第一个创建按钮 ;)

标签: python user-interface tkinter


【解决方案1】:

如何在按下按钮时执行任何操作”的答案应该在任何教程中。
例如在 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

顺便说一句:您可以禁用Entry 而不是创建Label (ent.config(state='disabled'))


编辑:我删除了lbl.["text"]中的点

【讨论】:

  • 谢谢!很有帮助。
  • lbl.["text"] 需要是 lbl["text"] 谢谢。
【解决方案2】:

在你写完 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 程序员。 原谅我,如果我错了,请纠正我! 干杯!

【讨论】:

    【解决方案3】:

    另一种动态更改标签的方法。在这里,我们使用 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()
    

    【讨论】:

      【解决方案4】:

      这是我创建带有标签的基本 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()
      

      【讨论】:

        【解决方案5】:

        这应该可行:

        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()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多