首页 > 解决方案 > Tkinter:如何使用按钮切换标签文本

问题描述

import Tkinter
from Tkinter import ttk

root = tk()
root.mainloop()
label = ttk.Label(root, text = "This text I want to change")
label.grid()

def select_label_text():
    top = Toplevel()
    top.title("Select Name")

    def change_name(name):
        label.cofigure(text=name)
        top.destroy()

    label_names = [a,b,c...] #this has undefined strings
    for i in range(len(label_names)): #here I made a button for each different name
        ttk.button(top, text = label_names[i], command = lambda: change_name(label_names[i])).grid()

当我按下它时,我想将标签文本更改为按钮的名称。有未定义的按钮,所以我无法将每个按钮保存到变量中。

ttk.Button(root, comand = select_label_text()).grid()

标签: pythontkinter

解决方案


你有很多错误。这是您的代码的一个版本,用于 Python 3,而不是 Python 2,至少可以运行。它可能不会完全按照您想要的方式执行,但它确实有效,而且它是比您发布的更好的起点。修改后的代码如下:

import tkinter # Tkinter
from tkinter import ttk

def select_label_text():
    top = tkinter.Toplevel()
    top.title("Select Name")

    def change_name(name):
        label.configure(text=name)
        top.destroy()


    label_names = ["a", "b", "c..."] #this has undefined strings
    for i in range(len(label_names)): #here I made a button for each different name
        ttk.Button(top, text=label_names[i], command=lambda i=i: change_name(label_names[i])).grid()

root = tkinter.Tk()
label = ttk.Label(root, text = "This text I want to change")
label.grid()
ttk.Button(root, command=select_label_text).grid()
root.mainloop()

您应该在您的代码和此版本之间进行差异比较以查看更改。


推荐阅读