tkinter绘制组件33——可折叠UI

引言

顾名思义,这是一个可折叠的UI控件。

UI控件自然就是TinUI了,或者是不可滚动的BasicTinUI。

可折叠,就是说这个控件可以以一个标题框布局在某一个位置,使用者可以展开,查看其中的界面信息。

这种控件tkinter原生想都不敢想,虽然可以做到。


布局

函数结构

    def add_expander(self,pos:tuple,title='expand content',tfg='black',tbg='#fbfbfb',bg='#f4f4f4',sep='#e5e5e5',width=200,height=200,scrollbar=False,font='微软雅黑 12'):#绘制一个可拓展UI
    '''
    pos-位置
    title-标题
    tfg-标题颜色
    tbg-标题框颜色
    bg-UI颜色
    sep-边框、分割线颜色
    widtH-ui宽度,标题宽度为 width-300
    height-UI高度
    scrollbar-是否启用TinUI
    font-字体
    '''

标题元素

这里的标题栏和TinUI的notify类似,借鉴一下:

        toptext=self.create_text((pos[0]+10,pos[1]+10),text=title,font=font,fill=tfg,width=width-30,anchor='nw')#标题
        uid='expander'+str(toptext)
        contentid='expander-content'+str(toptext)
        self.addtag_withtag(uid,toptext)
        self.addtag_withtag(contentid,toptext)
        tx1,ty1,tx2,ty2=self.bBox(toptext)
        if tx2-tx1<width:#判读当前文本宽度
            tx2=tx1+width
        topback=self.create_polygon((tx1,ty1,tx2,ty1,tx2,ty2,tx1,ty2),outline=tbg,fill=tbg,width=10,tags=(uid,contentid))#标题背景

需要注意的是,我们需要为折叠按钮提供一定的位置,因此文本宽度是width-30

当然这样的对于不同字号确实不妥,但是……坐等issue……

折叠按钮

        button=self.add_button2((tx2-2,ty1-0.5),anchor='ne',text='


                  
                

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...