这几天再用tkinter开发GUI, 有点小心得记录一下.
TIP1 tkinter动态修改label
说来惭愧这个其实是从百度看来的, 但是发现这个操作有点强就展开了无限延申, 甚至延伸出了TIP2
这里是地址
动态修改label听说在set之后可以直接变化, 但是我试了好几种方法都不行. 在网上找了半天然后发现了一个神奇的办法.
具体就是 对象[“属性”] = 内容
label=Enter(root,text="My name is rocky")
label["text"]="My name is Ben"
但是我又开发出了一个新玩法. 可以对没有的属性通过这个方法生成该属性, 从而避免特定位置声明属性可能造成错误.(比如说还没定义图片就初始化啦什么的)
label = Lebel(root, text=StringVar)
label["image"] = img
这样子就可以添加image到label, 等同于下
label = Lebel(root, text=StringVar, image=img)
但是又可以避免初始化的时候还没有定义图片的问题
例如:
def __init__(self):
self.label = Lebel(root, text=StringVar, image=img)
此时就会因为img未定义而报错(如果不想初始化时先显示图片)
但是如果这么写
def __init__(self):
self.label = Lebel(root, text=StringVar)
def xxxxx:
label["image"] = img
就可以避免这个问题
问: 那你为什么不先不写image的值, 只写image呢?
答:…我tmd忘记了…
TIP2 label不显示PY_VAR小技巧
如果想利用.set的特性, 对text进行修改的话可以这样.
str = StringVar()
label = Label(root, text=str)
str.set("这里写要显示的内容")
就可以随时set随时显示(别人是这样, 然而我不知道我为什么显示不出来…)
但是这样的话初始化的时候就会显示PY_VAR这样的信息. 很不好看.
所以我们可以这样操作
str = StringVar()
label = Label(root, text="")
str.set("这里写要显示的内容")
但是这样还怎么修改text的内容呢???
我们就要进行结合TIP1操作
label = Label(root, text="")
label["text"] = "这里写要显示的内容" / 常量 / 变量
问: 那你为什么不只写
label = Label(root, text)
label["text"] = "这里写要显示的内容" / 常量 / 变量
或者按照你上面说的,直接
label = Label(root)
label["text"] = "这里写要显示的内容" / 常量 / 变量
不也行吗?还更简单!
答:…我tmd又忘记了…
Copyright: dolor_059

本文分享了使用tkinter开发GUI时如何动态修改label内容的技巧,包括通过对象['属性'] = 内容的方式实现属性的动态赋值,以及解决label显示PY_VAR问题的方法,同时探讨了不同修改text内容的策略。
1万+

被折叠的 条评论
为什么被折叠?



