1. 程式人生 > >wxPython:訊息對話方塊MessageDialog

wxPython:訊息對話方塊MessageDialog

  訊息對話方塊即我們平時說的Messagebox,看看它的原型,下面是wxWidgets中的原型定義,C++風格,與python風格的區別就是wx字首與後面名稱直接相連,例如wxMessageDialog,在wxpython中使用時就是wx.MessageDialog

  wxMessageDialog(parentmessagecaption = "Message box"long style = wxOK | wxCANCELpos = wxDefaultPosition)

  其各引數不多做介紹,主要看看ShowModal()方法,它使用應用程式在對話方塊關閉前不能響應其它視窗的使用者事件,返回一個整數,取值如下:

  wx.ID_YES, wx.ID_NO, wx.ID_CANCEL, wx.ID_OK。

  另外,style的取值主要有以下幾種:

wxOK Show an OK button.
wxCANCEL Show a Cancel button.
wxYES_NO Show Yes and No buttons.
wxYES_DEFAULT Used with wxYES_NO, makes Yes button the default - which is the default behaviour.
wxNO_DEFAULT Used with wxYES_NO
, makes No button the default.
wxICON_EXCLAMATION Shows an exclamation mark icon.
wxICON_HAND Shows an error icon.
wxICON_ERROR Shows an error icon - the same as wxICON_HAND.
wxICON_QUESTION Shows a question mark icon.
wxICON_INFORMATION Shows an information (i) icon.
wxSTAY_ON_TOP The message box stays on top of all other window, even those of the other applications (Windows only). 

還是看一個例子:

 程式碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

class MyFrame(wx.Frame):
    
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, u'測試面板Panel', size = (600, 300))
        
        #建立面板
        panel = wx.Panel(self) 
        
        #在Panel上新增Button
        button = wx.Button(panel, label = u'關閉', pos = (150, 60), size = (100, 60))
        
        #繫結單擊事件
        self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)
        
    def OnCloseMe(self, event):
        dlg = wx.MessageDialog(None, u"訊息對話方塊測試", u"標題資訊", wx.YES_NO | wx.ICON_QUESTION)
        if dlg.ShowModal() == wx.ID_YES:
            self.Close(True)
        dlg.Destroy()
        
if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyFrame(parent = None, id = -1)
    frame.Show()
    app.MainLoop()
測試: