[记]tkinter基于LabelFrame继承的自定义组件与tkinter变量的传递
参考:python - 继承最佳实践 : *args, **kwargs 或明确指定参数 - IT工具网 (coder.work)
前言:tkinter属性值的传递是使用可变参数*args和**kwargs进行传递和属性设置的,所以继承时需将这些可变参数进行继承:
time:20220315
import tkinter as tk #bili:崩析 博客园:戳人痛处 class Wgt(tk.LabelFrame): def __init__(self,*args,StrVarList:tk.StringVar,**kwargs): super().__init__(*args,**kwargs) self.StrVarList=StrVarList self.Show() def Show(self): for idx in self.StrVarList: tk.Label(self,textvariable=idx).pack(expand=1,fill=tk.X) #bili:崩析 博客园:戳人痛处
此继承的部件类能在实例化的时候设置相关参数,如text,bg 等;
由于部件内有多个地方使用到tkinter变量(tk.StrVar())的地方,于是使用列表包装对象进行传递,可自适应长度;
现完整代码如下:
import tkinter as tk #bili:崩析 博客园:戳人痛处 class Wgt(tk.LabelFrame): def __init__(self,*args,StrVarList:tk.StringVar,**kwargs): super().__init__(*args,**kwargs) self.StrVarList=StrVarList self.Show() def Show(self): for idx in self.StrVarList: tk.Label(self,textvariable=idx).pack(expand=1,fill=tk.X) #bili:崩析 博客园:戳人痛处 bgbg = ['red','green','blue','pink'] def popColor(): popp = bgbg.pop(0) bgbg.append(popp) return popp if __name__=="__main__": win = tk.Tk() win.title('powerd By Bili:崩析') objList = [tk.StringVar() for idx in range(10)] [idy.set("num:{}".format(objList.index(idy))) for idy in objList] xe =Wgt(win,StrVarList=objList,text="2333",bg='red') xe.grid(column=0,row=0,sticky='WNSE') for idx in range(20): for idy in range(3): xe = Wgt(win,StrVarList=objList,text="idx:{},idy:{}".format(idx,idy),bg=popColor()) xe.grid(column=idx,row=idy) win.mainloop()
自定义部件的使用和普通的部件如文本部件没太大使用区别;
运行效果如下;
单个框:
全部:
-------------====================分割线====================-------------
作者:戳人痛处
本博客link:https://www.cnblogs.com/hardfood/p/16008394.html
硬币,懂?
https://space.bilibili.com/68973181
标签:
tkinter
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!