wxPython - 消息对话框

实战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 图标。

图1: MessageBox演示

二、消息对话框

消息对话框对话框显示单行或多行消息,它比消息框(wx.MessageBox)更加灵活,可定制更多的特性,比如可以更改消息对话框的图标或者按钮等。

消息对话框支持如下样式:

图1:wx.MessageDialog继承关系

#消息对话(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() 函数,可以将对话框显示在屏幕上。

图2:wx.MessageDialog演示

三、本文知识点


前一篇:wxPython - 系统常用事件

请关注,评论,收藏,点赞,和转发。

展开阅读全文

页面更新:2024-04-11

标签:对话框   消息   组合   图标   样式   按钮   例子   窗口   错误   参数

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top