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

最低0.47元/天 解锁文章
774

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



