鱼C论坛

 找回密码
 立即注册
查看: 1759|回复: 2

[已解决]tk Radiobutton,text参数问题

[复制链接]
发表于 2020-11-24 23:48:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 13:43:46

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

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

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

将你代码下的 var 增加一行代码,即可发现文本内容发生改变了:
var = tk.StringVar()
var.set('FishC.com')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()获得的就是一个空字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-25 13:43:46 | 显示全部楼层    本楼为最佳答案   

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

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

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

将你代码下的 var 增加一行代码,即可发现文本内容发生改变了:
var = tk.StringVar()
var.set('FishC.com')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 08:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表