10.3Python图形用户界面库tkinter(3):动态切换标签颜色

# 控件的事件关联
# 本例中单选按钮组的状态切换将动态改变标签的颜色
class ChangeLableDemo():
    def __init__(self):

        # 创建窗口并设置标题
        window = Tk()
        window.title("Change Lable Demo")

        # 向窗口打包一个标签
        self.lable = Label(window, text="Programming is fun")
        self.lable.pack()

        # 打包一个面板到窗口
        frame1 = Frame()
        frame1.pack()

        # 使用两个变量分别保存RadioButton和Entry的值
        self.rbValue = StringVar()
        self.entValue = StringVar()

        # 打包一个Label到面板1
        lable2 = Label(frame1, text="Enter text:")

        # 打包一个Entry到面板1,用户输入的值动态存储于StringVar对象entValue中
        entInput = Entry(frame1, textvariable=self.entValue)

        # 打包一个按钮到面板1,其点击监听由onBtnChangeClick实现
        btnChange = Button(frame1, text="Change Text", command=self.onBtnChangeClick)

        # 打包两个不同背景色的同组单选按钮Radiobutton到面板1
        # 选中状态存储于StringVar变量rbValue,切换监听交由onRadioChanged函数实现
        rb1 = Radiobutton(
            frame1, text="Red", bg="red",
            variable=self.rbValue, value="R", command=self.onRadioChanged
        )
        rb2 = Radiobutton(
            frame1, text="Yellow", bg="yellow",
            variable=self.rbValue, value="Y", command=self.onRadioChanged
        )

        # 将面板1中的空间表格排列
        lable2.grid(row=1, column=1)
        entInput.grid(row=1, column=2)
        btnChange.grid(row=1, column=3)
        rb1.grid(row=1, column=4)
        rb2.grid(row=1, column=5)

        # 开启消息循环
        window.mainloop()

    # 按钮点击事件监听
    def onBtnChangeClick(self):
        print("onBtnChangeClick:" + (self.entValue.get()))
        pass

    # 单选按钮组事件监听
    def onRadioChanged(self):
        # print("onRadioChanged:" + ("Red" if self.rbValue.get()=="R" else "Yellow"))
        if self.rbValue.get() == "R":
            self.lable["fg"] = "red"  # 改变标签前景色
        else:
            self.lable["fg"] = "yellow"
        pass

执行效果
这里写图片描述

你可能感兴趣的:(Python,语言程序设计)