wxPython 实践(六)对话框

wxPython 实践(一)概述
wxPython 实践(二)基础控件
wxPython 实践(三)页面布局
wxPython 实践(四)事件响应
wxPython 实践(五)高级控件
wxPython 实践(六)对话框
wxPython 实践(七)GDI 介绍
wxPython 实践(八)其他


官网
https://docs.wxpython.org/wx.1moduleindex.html
https://www.w3ccoo.com/wxpython/wxpython_major_classes.html
系列文章:
https://wintel.blog.youkuaiyun.com/?type=blog

1. wx.Dialog(对话框)

wx.Dialog 类是所有对话框窗口类的的基类,一个对话框应用类一般都从 wx.Dialog 类或者其子类派生(wx.PrintDialog例外,它调用系统原生对话框)。wx.Dialog 常用来完成一个交互任务或者作为应用的顶层窗口使用。
对话框分为两种类型:

  • 模态对话框:在关闭之前,不能与同一个应用程序的其他窗口进行交互,它是阻塞式调用方式,模态对话框通过调用 ShowModal() 方法实现;使用模式对话框时,事件就在对话框内部循环,必须将对话框关闭才能继续执行主界面的操作。对于参数选择的对话框,一般用模态对话框。
  • 非模态对话框:既可以和它交互,也可以和同一个应用程序的其他窗口交互。它是非阻塞式调用方式,非模态对话框调用 Show() 方法实现。对于显示或查看某些内容的对话框,一般用非模态对话框。

wx.Dialog 对话框是一个带有标题栏的窗口(必要时候还带有一个系统菜单)。在一个对话框中可以包含控件和其他窗口,通过这些控件和窗口,用户可以做出一些选择或者回答一些问题等等。对话框可以自动滚动。
通常情况下,一个对话框包含一个甘比按钮,或者包含两个按钮,一个用于确认(OK),一个用于取消(Cancel)。如果有取消按钮,当用户按下”Esc”键时,则会自动激活该按钮的功能。在默认情况下,wx.Dialog 带有两个标准的按钮 wx.ID_OK 和wx.ID_CANCEL 。

窗口样式:

  • wx.CAPTION:在对话框上添加标题。
  • wx.DEFAULT_DIALOG_STYLE:相当于wx.CAPTION, wx.CLOSE_BOX两者组合。
  • wx.RESIZE_BORDER:在窗口周围显示可调整大小的框架。
  • wx.SYSTEM_MENU:显示系统菜单。
  • wx.CLOSE_BOX:在框架上显示一个关闭框。
  • wx.MAXIMIZE_BOX:在对话框上显示一个最大化框。
  • wx.MINIMIZE_BOX:在对话框上显示一个最小化框。
  • wx.THICK_FRAME:在窗口周围显示粗框。
  • wx.STAY_ON_TOP:对话框位于所有其他窗口的顶部。
    - NO_3D:此样式已过时,不再做任何事情,请勿在任何新代码中使用它。
  • wx.DIALOG_NO_PARENT:默认情况下,父窗口为None的对话框将以应用程序的顶级窗口作为父窗口。使用这种风格可以防止这种情况发生,并创建一个孤立的对话框。对于模式对话框,不建议这样做。
  • wx.DIALOG_EX_CONTEXTHELP:在Windows下,在标题上放置一个查询按钮。当按下按钮时,Windows将进入上下文敏感的帮助模式,如果用户单击应用程序窗口,wxPython将发送一个wx.EVT_HELP事件。注意,这是一个扩展样式,必须在调用Create之前调用SetExtraStyle来设置。
  • wx.DIALOG_EX_METAL:在macOS上,这种风格的框架将显示为金属外观。这是一个扩展风格。

常用方法:

  • Centre(self, direction=BOTH):窗口居中显示,direction取值为wx.HORIZONTAL, wx.VERTICAL 和 wx.BOTH。
  • GetReturnCode(self):获得窗口的返回码。
  • EndModal(self, retCode):结束一个模式对话框,传递一个从ShowModal调用返回的值。
  • Iconize(self, iconize=True):将窗口图标化或者恢复正常。仅在Windows系统下有效。
  • IsIconized(self):如果窗口被图标化,则返回True。仅在Windows系统下有效。
  • IsModal(self):如果是模式对话框则返回True,否则返回False。
  • SetIcon(self, icon):设置对话的图标。
  • SetReturnCode(self, retCode):设置对话框的返回码。
  • Show(self, show=True):显示或者隐藏对话框。
  • ShowModal(self):显示一个模式对话框。注意,此函数创建了一个临时事件循环,该事件循环优先于应用程序的主事件循环。
import wx

class MyDialog(wx.Dialog):
    def __init__(self, parent, title):
        # super(ModalDialog, self).__init__(parent, title=title)
        super().__init__(parent=parent)
        self.SetTitle(title)
        vBox = wx.BoxSizer(wx.VERTICAL)

        hBox2 = wx.BoxSizer(wx.HORIZONTAL)
        okButton = wx.Button(self, label="确认")
        closeButton = wx.Button(self, label="关闭")
        hBox2.Add(okButton)
        hBox2.Add(closeButton, flag=wx.LEFT, border=5)
        okButton.Bind(wx.EVT_BUTTON, self.OnClose)
        closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
 
        vBox.Add(hBox2, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)
 
        self.SetSizer(vBox)
        self.Fit()
        self.Center()

        # # 设置对话框为模态
        # self.ShowModal()

    def OnClose(self, e):
        self.Destroy()

class MyWin(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent=parent)
        self.SetTitle(title=title)
 
        toolbar = self.CreateToolBar()
        # # 设置图标大小
        toolbar.SetToolBitmapSize((20, 20))
        setting_button = toolbar.AddTool(wx.ID_SETUP, "Setting", wx.Bitmap("icons/setting.png"))
        toolbar.Realize()
        toolbar.Bind(wx.EVT_TOOL, self.OnChangeDepth)
 
        self.Centre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值