Tartalomjegyzék

< wxPython GUI

wxPython Párbeszédablak

Üzenetablak

A wx.MessageBox() csak egy függvény, amelyet egyszerű üzenetek megjelenítésére találtak ki.

wx.MessageBox('Üzenetablak')

GTK alapú rendszeren nem jelenik meg az ikon, mivel a GTK azt feltételezi, hogy a gombhoz tartozik bitmap kép, ezért nem jelenít meg ikont.

wx.MessageBox('Üzenetablak', 'Info')

wx.MessageBox('Üzenetablak', 'Info', wx.OK)

wx.MessageBox('Üzenetablak', 'Info', wx.OK | wx.ICON_INFORMATION) 

Teljeskód:

import wx
 
class MainFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MainFrame, self).__init__(parent, title=title)
 
        self.btn = wx.Button(self, wx.ID_ANY, 'Mehet')
        self.btn.Bind(wx.EVT_BUTTON, self.onClickButton1)
    def onClickButton1(self, event):
        wx.MessageBox('Üzenetablak', 'Info', 
        wx.OK | wx.ICON_INFORMATION)      
 
class SimpleApp(wx.App):
    def OnInit(self):
        frame = MainFrame(None, 'Párbeszéd')
        frame.Show()
        return True
 
if __name__ == "__main__":
    app = SimpleApp()
    app.MainLoop()
wx.ICON_INFORMATION Információs ikon
wx.ICON_ERROR Hiba ikon
wx.ICON_QUESTION Kérdés ikon
wx.ICON_WARNING Figyelmeztető ikon
wx.ICON_AUTH_NEEDED Azonosítás szükséges szimbólum

Generic

Ez a megoldás működik GTK-án is.

import wx.lib.agw.genericmessagedialog as GMD
#...
 
        dlg = GMD.GenericMessageDialog(self, 'Üzenet', 'Teszt',
            agwStyle=wx.ICON_INFORMATION | wx.OK)
        dlg.ShowModal()

Teljes kód:

generic.py
import wx
import wx.lib.agw.genericmessagedialog as GMD
 
class MainFrame(wx.Frame):
    def __init__(self, parent):
        super(MainFrame, self).__init__(parent)
        self.button1 = wx.Button(self, label="Nyit")
        self.button1.Bind(wx.EVT_BUTTON, self.on_click_button1)
        self.button2 = wx.Button(self, label="Másik")
 
        main_box = wx.BoxSizer(wx.VERTICAL)
        main_box.Add(self.button2)
        main_box.Add(self.button1)        
        self.SetSizer(main_box)
 
    def on_click_button1(self, event):
        dlg = GMD.GenericMessageDialog(self, 'Üzenet', 'Teszt',
            agwStyle=wx.ICON_INFORMATION | wx.OK)
        dlg.ShowModal()
 
 
class ValamiApp(wx.App):
    def OnInit(self):
        frame = MainFrame(None)
        frame.Show()
        return True
 
app=ValamiApp()
app.MainLoop()

Modális ablak

A wx.MessageDialog segítségével létrehozható modális párbeszédablak. A wx.MessageDialog egy osztály, amit példányosítással használhatunk.

dial = wx.MessageDialog(None, 'Üzenet', 'Info', wx.OK)
dial.ShowModal()

Teljeskód:

parbeszed.py
import wx
 
class MainFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MainFrame, self).__init__(parent, title=title)
        self.button1 = wx.Button(self, label='Mehet')
        self.button1.Bind(wx.EVT_BUTTON, self.onClickButton1)
    def onClickButton1(self, event):
        dial = wx.MessageDialog(None, 'Üzenet', 'Info', wx.OK)
        dial.ShowModal()
 
app = wx.App()
frame = MainFrame(None, 'Valami')
frame.Show()
app.MainLoop()

Saját ablak

Saját ablak létrehozásánál ügyeljünk arra, hogy az ablak szülője a főablak legyen. Ha nem állítjuk be, a szülőablak bezárása esetén a párbeszédablak még fut. Ha beállítjuk a főablakot szülőnek, annak bezárása esetén a párbeszédablakok is kilépnek.

class ValamiDialog(wx.Dialog):
    def __init__(self, parent, title):
        super(ValamiDialog, self).__init__(parent, title=title, size=(300, 400))
        panel = wx.Panel(self)
        self.btn = wx.Button(panel, wx.ID_OK, label='ok')
sajatparbe.py
import wx
 
class ValamiDialog(wx.Dialog):
    def __init__(self, parent, title):
        super(ValamiDialog, self).__init__(parent, title=title, size=(300, 400))
        panel = wx.Panel(self)
        self.btn = wx.Button(panel, wx.ID_OK, label='ok')
 
class MainFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MainFrame, self).__init__(parent, title=title)
 
        dialog = ValamiDialog(self, 'valami')
        dialog.Show()
 
class SimpleApp(wx.App):
    def OnInit(self):
        frame = MainFrame(None, 'Párbeszéd')
        frame.Show()
        return True
 
if __name__ == "__main__":
    app = SimpleApp()
    app.MainLoop()

Saját újra

sajatUjra.py
import wx
 
class ValamiDialog(wx.Dialog):
    def __init__(self, parent, title):
        super(ValamiDialog, self).__init__(parent, title=title, size=(300, 400))
 
        rootSizer = wx.BoxSizer(wx.VERTICAL)
 
        rootSizer.Add(
                wx.TextCtrl(self, -1, "Szöveg",
                wx.DefaultPosition,
                wx.Size(100, 50),
                wx.TE_MULTILINE),
                1,
                wx.EXPAND |
                wx.ALL,
                10)
 
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(
                wx.Button(self, wx.ID_OK, "OK"),
                0,
                wx.ALL,
                10)
        button_sizer.Add(
                wx.Button(self, wx.ID_CANCEL, "Mégsem"),
                0,
                wx.ALL,
                10)
 
        rootSizer.Add(
                button_sizer,
                0,
                wx.ALIGN_CENTER)
 
        self.SetSizerAndFit(rootSizer)
 
 
class MainFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MainFrame, self).__init__(parent, title=title)
 
        dialog = ValamiDialog(self, 'Felirat')
        dialog.Show()
 
class SimpleApp(wx.App):
    def OnInit(self):
        frame = MainFrame(None, 'Párbeszéd')
        frame.Show()
        return True
 
if __name__ == "__main__":
    app = SimpleApp()
    app.MainLoop()

Névjegy

nevjegy.py
import wx
import wx.adv
 
class MainFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MainFrame, self).__init__(parent, title=title)
 
        description = """Ez egy tesztprojekt"""
        licence = """Szabadon használható"""
 
        self.info = wx.adv.AboutDialogInfo()
        self.info.SetIcon(wx.Icon('projekt01.png', wx.BITMAP_TYPE_PNG))
        self.info.SetName('Saját program')
        self.info.SetVersion('1.0')
        self.info.SetDescription(description)
        self.info.SetCopyright('Copyright (C) Nagy János, 2020')
        self.info.SetWebSite('https://valahol.hu')
        self.info.SetLicence(licence)
        self.info.AddDeveloper('Nagy János')
        self.info.AddDocWriter('Nagy János')
        self.info.AddArtist('Nagy János')
        self.info.AddTranslator('Nagy János')
 
        self.btn = wx.Button(self, wx.ID_ANY, 'Mehet')
        self.btn.Bind(wx.EVT_BUTTON, self.onClickButton1)
    def onClickButton1(self, event):
        wx.adv.AboutBox(self.info)
 
 
class SimpleApp(wx.App):
    def OnInit(self):
        frame = MainFrame(None, 'Párbeszéd')
        frame.Show()
        return True
 
if __name__ == "__main__":
    app = SimpleApp()
    app.MainLoop()

Forrás