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)更加灵活,可定制更多的特性,比如可以更改消息对话框的图标或者按钮等。
消息对话框支持如下样式:wx.OK: 在对话框上显示一个OK按钮,它可以和CANCEL按钮组合;wx.Cancel: 在对话框上显示一个Cancel按钮, 它可以和OK以及YES_NO按钮组合;wx.YES_NO: 在对话框上同时显示Yes和No按钮,推荐使用这种样式的时候和CANCEL组合;wx.HELP: 在对话框上显示Help按钮,如果其标签为系统缺省值,则它可以特殊的外观和位置;wx.YES_DEFAULT: Yes按钮为默认值;wx.NO_DEFAULT: No按钮为默认值;wx.CANCEL_DEFAULT: Cancel按钮为默认值;wx.ICON_NONE: 如果可能,在对话框上不显示任何图标;wx.ICON_ERROR: 在对话框上显示一个错误图标;wx.ICON_WARNING: 在对话框上显示一个警告图标;wx.ICON_QUESTION: 在对话框上显示一个问号标志;wx.ICON_INFOMATION: 在对话框上显示一个信息图标;wx.ICON_EXCLAMATION: 同wx.ICON_WARNING;wx.ICON_HAND: 同wx.ICON_ERROR;wx.ICON_AUTH_NEEDED: 显示身份验证所需的符号;wx.STAY_ON_TOP: 使消息框保持在所有其他窗口之上 (目前仅在MSW和GTK下实现);wx.CENTRE: 将消息框置于其父消息框的中央,如果未指定其父消息框,则将消息框置于屏幕中央。在MSW下设置此样式没有区别,因为对话框始终以父对象为中心。
图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演示
三、本文知识点使用wx.MessageBox;使用wx.MessageDialog。
前一篇:wxPython - 系统常用事件
请关注,评论,收藏,点赞,和转发。
走不出执念,你我皆是囚徒人的一生很多时候处于种种困境之中,有现实的,也有精神的。如何超越困境?不同的圣者有不同的答案。一切宗教哲学科学的回答,也许只是解脱的工具而已。人为什么会陷入困境呢?柏拉图理想国有一
那些神仙句子,建议收藏(星海横流,岁月成碑)1。永远不要认为一个人爱你是理所当然的。大多数努力去爱别人的人,都同样渴望被爱。2。太阳是暖人的,却不止驱寒月亮瞧着冷清了些,却温柔了许多炎凉。3。倘若我辞藻辉煌,我为你写的又何止
孙怡离婚后彻底放开了,认真打扮拍时尚大片,真好看对于爱美的女人来说,长相和身材优势只是基础,懂得如何利用这些优势才是关键。生活中拥有高颜值和好身材的人并不少,只是很多人在搭配的时候不知道应该如何处理搭配细节而已。在孙怡的搭配中露
王思聪和金发美女一起吃螃蟹,下楼时笑容满面,未戴口罩引发争议最近这段时间昔日的国民老公王思聪算是逐渐高调起来,不仅和新任女友慎婕有很多互动,同时也是多次出游全国各地。而有一位在上海的网友就偶遇到了王思聪前往一家饭店吃螃蟹,与此同时还拍摄到王
室内盆栽新宠儿裂叶玫瑰秋海棠,耐阴好养,花和叶都好看导读绿植盆栽已经是家居生活的必备点缀物,它们能给你的居室带来生机勃勃,还能观赏。今天来带大家认识一种室内盆栽新宠儿,它颜值高好打理,开花勤奋,养护也简单,希望大家喜欢。一认识裂叶玫
有哪些好看到爆的风衣?风衣推荐平价经典韩系气质大衣秋冬必备秋冬季来临,女孩子的衣柜怎么能缺少一件百搭的风衣外套呢?整理了一份不同色系的风衣分享给大家看看有没有喜欢的!韩系女主的风衣外套来了搭配小tips
总被贴上脸大不上镜的标签!阔面脸的变美思路,逆袭成美女姐妹们,1秒之内回答春春这个问题网红脸VS自然脸,你们觉得哪个更好看呢?回想前几年,眼大鼻高锥子脸成了审美的标准,好多原本清纯可爱的女生,为了迎合这样的网红审美观,去整成了僵化不自
带我去旅游第十二站山东梁山县头条创作挑战赛世界太大,我们太小时间太快,我们太慢。很多地方,我们不可能都走到,但是利用信息的便利,可以用眼睛去看看,用心去体会,用精神去享受。这是我的畅想,以聊城为圆心,一个地方
探访海南屯昌苗村芽石铺村村民日子越过越好海南屯昌苗村芽石铺村苗族村民。林小丹摄中新网海南屯昌10月17日电题探访海南屯昌苗村芽石铺村村民日子越过越好作者林小丹在去往海南省屯昌县乌坡镇芽石铺村的路上,宽敞平坦的道路直通村子
第227集来到了外地人来广州,打卡圣地的第一站已经计划想去广州,可广州一人也不认识,从来没去过,如果能有个认识的人,不要说帮上忙,哪怕介绍一下广州的水土人情也会省力气不少,我想到二弟给我说过,他有个温州女同事关系很好,后来来到
日本侵略我国14年,有8个省没有被占领,哪8个省你知道吗?每个中国人心中的痛!恨不抗日死,留作今日羞。国破尚如此,我何惜此头这是著名抗日斗士吉鸿昌在抗日战争时期写下的斗争宣言。而今,我们更不能忘记这段历史!一日军侵华早有野心日本位于一个小