tkinter绘制组件(43)——对话框

引言

严格来说,对话框是控件的组合,不是一个控件,但是是一种常见的功能交互界面,因此,TinUI有必要实现内置的对话框。

TinUI的对话框基于TinUIDialog类,该类设计和tkinter内置Dialog一样,不作为外部调用类,而是通过内置的showinfo等函数封装,让开发者直接使用这些函数。TinUI对话框分为信息提示框和输入框,都将通过TinUIDialog类实现。


布局

窗口

弹窗窗口就是一个简单的Toplevel,但是绑定了父窗口,或者说产生该对话框的窗口。

class Dialog(Toplevel):
    """
    TinUI对话框基础类
    """

    def __init__(self,master,dialogtype='normal',**options):
        super().__init__(master,**options)
        self.withdraw()

        self.tinui=BasicTinUI(self)
        self.tinui.pack(fill='both',expand=True)

        self.type=dialogtype#对话框类型

        self.resizable(False,False)
        self.tk.call('wm', 'iconbitmap', self._w, '-default', '')

这里设置wm_iconbitmap用了tk命令,是为了关闭窗口图标。

下面,我们将以消息提示框为例,简要说明TinUIDialog的实现。

初始化

TinUIdialog的封装函数会调用对话框基础类,通过给定参数进行窗口初始化。

    def initial_msg(self,title,content,yestext='OK',notext='Cancel'):
        """
        初始化对话框-消息类
        """
        YES=yestext
        NO=notext

        self.title(title)
        self.protocol('WM_DELETE_WINDOW',lambda:self.return_msg(None))

这里用initial_msg命名是因为这是信息提示对话框,输入对话框的初始化方法命名为initial_input

对话框类型

这里的类型指的是对话框的内容性质,比如普通信息、重要信息、警告、错误、问询等等。

输入问答框有文本、整数、浮点数输入等等。

在窗口初始化时,直接通过判断窗口类型进行基础配置。

        if self.type=='normal':
            pass
        elif self.type=='info':
            self.tinui['bg']='#ffffff'
            icon_uid=self.tinui.add_paragraph((5,5),text='\uE946',fg='#5969e0',font='{Segoe Fluent Icons} 14',anchor='w')
            self.tinui.addtag_withtag('content',icon_uid)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值