qin_yin 发表于 2020-11-24 23:48:41

tk Radiobutton,text参数问题

import tkinter as tk

root = tk.Tk()
root.title('This is my fourth TK')
root.geometry('210x240')

var = tk.StringVar()

l = tk.Label(master=root, text='Choice your options', bg='green', height=2, width=20)
l.pack()


def print_choice():
    l.config(text='You choice' + var.get())   # 这里没有把 var.get的值添加进去,还是说var根本就没有被修改


rb1 = tk.Radiobutton(master=root, text='1', textvariable=var, value='A', command=print_choice)   # text设置了参数但是实际没有显示
rb1.pack()

root.mainloop()

笨鸟学飞 发表于 2020-11-25 09:11:32

======首先这里写错了=========
tk.Radiobutton(master=root, text='1', textvariable=var, value='A', command=print_choice)
==>textvariable=var是把text属性和变量var绑定,因为tk是循环事件(可以理解为死循环)实现的,所以这2个值相互绑定后是实时更新显示的,var未初始化赋值,就是空文本,你怎么设置text都是没有用的,真正要按你的想法来,那这行代码应该改为:
tk.Radiobutton(master=root,textvariable=var, value='A', command=print_choice)
var.set('1')
========函数中的错误,其实并没有错误===========
l.config(text='You choice' + var.get())
因为var未赋值,所以他是空字符串,并不是这行没有执行,而是var.get()获得的就是一个空字符串

Twilight6 发表于 2020-11-25 13:43:46


你代码中只初始化了 var 的值,而没有进行改变,那么默认 var 值是 空字符串

所以你需要通过 set 函数设置数据才会有数据显示,你没有进行设置那么默认是空字符串

而且你的 Radiobutton 当 textvariable 参数设置后,text 参数就没意义了,其他组件也是这样,textvariable 可以理解为可实时改变的文本,而 text 可以理解为固定文本

将你代码下的 var 增加一行代码,即可发现文本内容发生改变了:

var = tk.StringVar()
var.set('FishC.com')

页: [1]
查看完整版本: tk Radiobutton,text参数问题