wxPython: Selbst gemachter MessageDialog

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

wxPython: Selbst gemachter MessageDialog

Beitragvon gerold » Freitag 27. Juli 2007, 14:11

Hallo!

Oft möchte man die wx.MessageBox ein wenig erweitern um z.B. ein eigenes Bild anzeigen zu können oder um z.B. im Text eigene Hyperlinks unterbringen zu können.

In diesen Fällen muss man sich selber einen Dialog basteln. Und hier ist eine Basis, von der du z.B. aus gehen könntest.

Bild

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
import textwrap

wx.SetDefaultPyEncoding("iso-8859-15")


class MyMessageDialog(wx.Dialog):
   
    def __init__(self, parent = None, title = "Example"):
        wx.Dialog.__init__(self, parent, -1, title)
       
        # Schriftgröße
        font = self.GetFont()
        font.SetPointSize(9)
        self.SetFont(font)
       
        # Haupt-Sizer
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(vbox_main)
       
        # Sizer für den oberen Bereich (horizontal)
        hbox_content = wx.BoxSizer(wx.HORIZONTAL)
        vbox_main.Add(hbox_content, 0, wx.EXPAND | wx.ALL, 5)
       
        # Icon
        icon_bmp = wx.ArtProvider_GetBitmap(wx.ART_INFORMATION)
        stat_bmp = wx.StaticBitmap(self, bitmap = icon_bmp)
        hbox_content.Add(stat_bmp, 0, wx.ALL, 15)
       
        # Hinweistext
        message = textwrap.dedent(
            """
            Das ist immer so eine Sache mit diesen Texten. Man weiß
            nie was man so schreiben soll. Aber irgendwie möchte man
            doch etwas an Text zusammen bekommen...
            """
        ).strip()
        lab_message = wx.StaticText(self, label = message)
        hbox_content.Add(lab_message, 1, wx.ALL, 5)
       
        # Linie
        vbox_main.Add(wx.StaticLine(self), 0, wx.EXPAND)
       
        # Sizer für die Buttons
        hbox_buttons = wx.BoxSizer(wx.HORIZONTAL)
        vbox_main.Add(hbox_buttons, 0, wx.EXPAND | wx.ALL, 5)
       
        # Cancel-Button
        btn_cancel = wx.Button(self, id = wx.ID_CANCEL, label = "Abbrechen [ESC]")
        hbox_buttons.Add(btn_cancel, 0, wx.ALL, 5)
       
        # Spreizer
        hbox_buttons.AddStretchSpacer()
       
        # OK-Button
        btn_ok = wx.Button(self, id = wx.ID_OK, label = "&OK")
        hbox_buttons.Add(btn_ok, 0, wx.ALL, 5)
        btn_ok.SetFocus()
        btn_ok.SetDefault()
       
        # Layout
        self.Fit()
        if parent:
            self.CenterOnParent()
        else:
            self.Center()


def main():
    """Testing"""
   
    app = wx.PySimpleApp()
    d = MyMessageDialog()
    if d.ShowModal() == wx.ID_OK:
        print "OK"
    else:
        print "nicht OK"


if __name__ == "__main__":
    main()

mfg
Gerold
:-)

Suchworte: Dialog Message Box MessageDialog handgemacht selbst
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder