oktatas:programozas:python:wxpython_gui:wxpython_parbeszedablak
Tartalomjegyzék
wxPython Párbeszédablak
- Szerző: Sallai András
- Copyright © Sallai András, 2020, 2021
- Web: https://szit.hu
Ü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
oktatas/programozas/python/wxpython_gui/wxpython_parbeszedablak.txt · Utolsó módosítás: 2021/04/01 01:05 szerkesztette: admin