实战wxPython系列-015
对话框(Dialog)是多数 GUI 应用不可缺少的部分。“对话”是指两个或更多人之间的交谈。在电脑应用中,对话框是指一个可以和应用交流的窗口,可以用来输入数据、修改数据、修改应用设置等。因此,对话框是用户和电脑程序交流的重要手段。
在GUI应用中,常常需要弹出一些提示信息,这时我们就会使用到消息对话框,在wxPython中提供了两种形式的消息对话框wx.MessageBox和wx.MessageDialog,在下面我们将分别演示如何使用这两种形式的对话框。
一、一个简单的消息框
消息框(MessageBox)可以给用户提供简单的信息,一个常见的例子就是下载应用,当下载完毕后弹出一个消息框。
#消息框(wx.MessageBox)
import wx
class SampleMessageBox(wx.Frame):
def __init__(self, *args, **kw):
super(SampleMessageBox, self).__init__(*args, **kw)
self.InitUi()
def InitUi(self):
#延迟3秒后调用self.ShowMessage
wx.CallLater(3000, self.ShowMessage)
self.SetTitle("实战wxPython: 消息框")
self.SetSize(400, 280)
self.Centre()
def ShowMessage(self):
wx.MessageBox("下载完毕", "信息", wx.OK | wx.ICON_INFORMATION)
def main():
app = wx.App()
sample = SampleMessageBox(None)
sample.Show()
app.MainLoop()
if __name__ == "__main__":
main()
上面的例子将在3秒后展示一个消息对话框。
wx.CallLater(3000, self.ShowMessage)
wx.CallLater在3秒后会调用某个方法。第一个参数是时间值 (以毫秒为单位),第二个参数是被调用的方法。
wx.MessageBox 展示了一个小的对话框,其中三个参数,第一个为消息内容,第二个是标题,第三个是一些标记,用来展示不同的按钮和图标。在这个例子中,我们展示了一个 OK 按键和一个 Information 图标。
二、消息对话框
消息对话框对话框显示单行或多行消息,它比消息框(wx.MessageBox)更加灵活,可定制更多的特性,比如可以更改消息对话框的图标或者按钮等。
消息对话框支持如下样式:
#消息对话(wx.MessageDialog)
import wx
class SampleMessageDialog(wx.Frame):
def __init__(self, *args, **kw):
super(SampleMessageDialog, self).__init__(*args, **kw)
self.InitUi()
def InitUi(self):
panel = wx.Panel(self)
hbox = wx.BoxSizer()
sizer = wx.GridSizer(2,2,2,2)
btnInfo = wx.Button(panel, label="信息")
btnError = wx.Button(panel, label="错误")
btnQuestion = wx.Button(panel, label="问题")
btnAlert = wx.Button(panel, label="警告")
sizer.AddMany([btnInfo, btnError, btnQuestion, btnAlert])
hbox.Add(sizer, 0, wx.ALL, 15)
panel.SetSizer(hbox)
btnInfo.Bind(wx.EVT_BUTTON, self.ShowMessageInfo)
btnError.Bind(wx.EVT_BUTTON, self.ShowMessageError)
btnQuestion.Bind(wx.EVT_BUTTON, self.ShowMessageQuestion)
btnAlert.Bind(wx.EVT_BUTTON, self.ShowMessageAlert)
self.SetTitle("实战wxPython: 消息对话框")
self.SetSize(400, 280)
self.Centre()
def ShowMessageInfo(self, e):
dlg = wx.MessageDialog(None, "下载完成", "信息", wx.OK)
dlg.ShowModal()
def ShowMessageError(self, e):
dlg = wx.MessageDialog(None, "错误加载文件", "错误", wx.OK | wx.ICON_ERROR)
dlg.ShowModal()
def ShowMessageQuestion(self, e):
dlg = wx.MessageDialog(None, "确定退出应用?", "问题", wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
dlg.ShowModal()
def ShowMessageAlert(self, e):
dlg = wx.MessageDialog(None, "不允许的操作", "警告", wx.OK | wx.ICON_EXCLAMATION)
dlg.ShowModal()
def main():
app = wx.App()
sample = SampleMessageDialog(None)
sample.Show()
app.MainLoop()
if __name__ == "__main__":
main()
在上面的例子中,我们创建了 4 个按钮并将之放置到一个 grid sizer 中。这些按钮将展示 4 个不同的对话框窗口,这些窗口在创建时使用了不同的样式标记。
创建消息对话框比较简单。通过将 parent 参数设置为 None,可以将对话框设置为顶层窗口。接着的两个字符串参数为消息内容和对话框的标题。调用 ShowModal() 函数,可以将对话框显示在屏幕上。
三、本文知识点
前一篇:wxPython - 系统常用事件
请关注,评论,收藏,点赞,和转发。
页面更新:2024-04-11
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号