Tartalomjegyzék
wxPython widgetek I
- Szerző: Sallai András
- Copyright © Sallai András, 2020, 2021
- Licenc: GNU Free Documentation License 1.3
- Web: https://szit.hu
StaticText
Háttér és előtér
Háttérszín beállítása:
felirat1 = wx.StaticText(panel, title='valami') felirat1.SetForegroundColour('blue')
felirat1.SetForegroundColour((0, 0, 255))
felirat1.SetForegroundColour('blue')
felirat1.SetForegroundColour(wx.Colour(0,0,255))
Felirat változtatása
Ha szeretnénk megváltoztatni a StaticText feliratát futás közben, akkor szükség van egyedi azonosítóra. Ezt a wx.ID_ANY paraméter megadásával tehetjük meg:
felirat1 = wx.StaticText(panel, wx.ID_ANY, 'valami') felirat1.SetLabel('Új felirat')
Amire ügyeljünk: A StaticText feliratának változtatása utána, a felhasználói felületen, elveszti wx.EXPAND beállítást. Ha középre volt igazítva, és új értéket kap a felirat, az új szöveg eltérő karakter szélesség esetén nem lesz középen.
Ilyen esetben az eseménykezelőben futtassuk a kereten egy Layout() függvényt.
self.Layout()
Fontbeállítás
Fontbeállítás:
label1.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, "Sans"))
label1.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, "Linux Libertine Display O"))
label1.SetFont(wx.Font(16, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
Példa
import wx app = wx.App() mainFrame = wx.Frame(None, title='Feliratteszt') label1 = wx.StaticText(mainFrame, label='Felirat') label1.SetBackgroundColour('blue') label1.SetForegroundColour('white') mainFrame.Show(True) app.MainLoop()
TextCtrl
textctrl1 = wx.TextCtrl(self)
textctrl1 = wx.TextCtrl(self, -1, 'Szöveg', style=wx.TE_MULTILINE)
textctrl1 = wx.TextCtrl(self, -1, 'Szöveg')
Szöveg színezése:
szoveg = "Macska\nKutya\nMalac" self.te.AppendText(szoveg) self.te.SetStyle(0, -1, wx.TextAttr(wx.BLACK, wx.RED))
A StaticText-hez hasonló kinézet:
Távolítsuk el a szegélyt.
A TextCtrl objektum megtartja az wx.EXPAND beállítást, nem méreteződik át, új tartalom esetén, és szegély nélkül nem különbözik a StaticText-től. A TextCtrl objektumon állítsunk be csak olvasható módot. Például:
textctrl1 = wx.TextCtrl(self, wx.ID_ANY, "", style=wx.BORDER_NONE | wx.TE_CENTRE) textctrl1.Enable(False)
Csak szélesség állítása:
wx.TextCtrl(self, -1, size=(100, -1))
ComboBox
self.combobox = wx.ComboBox(self) self.combobox.Append(['egy', 'kettő'])
Kiválasztás esemény:
self.combobox.Bind(wx.EVT_COMBOBOX, self.onCombobox) ... def onCombobox(self, event): print('Esemény')
A kiválasztott érték lekérdezése:
selected = self.combobox.GetValue()
ToggleButton
self.toggleButton = wx.ToggleButton(self, label='Mehet') self.toggleButton.Bind(wx.EVT_TOGGLEBUTTON, self.onClickToggle)
- toggleButton.py
import wx class MainFrame(wx.Frame): def __init__(self, parent, title): super(MainFrame, self).__init__(parent, title=title) self.toggleButton = wx.ToggleButton(self, label='Mehet') self.toggleButton.Bind(wx.EVT_TOGGLEBUTTON, self.onClickToggle) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(self.toggleButton) self.SetSizer(vbox) self.Layout() def onClickToggle(self, event): # eredmény True vagy False allapot = event.GetEventObject().GetValue() print(allapot) class SimpleApp(wx.App): def OnInit(self): self.frame = MainFrame(None, title='váltógomb') self.frame.Show() return True app = SimpleApp() app.MainLoop()
BitmapButton
kep = wx.Bitmap("valami.png", wx.BITMAP_TYPE_ANY) self.bitmapButton = wx.BitmapButton(self, -1, kep) self.bitmapButton.Bind(wx.EVT_BUTTON, self.onClickToggle)
- butmapButton.py
import wx class MainFrame(wx.Frame): def __init__(self, parent, title): super(MainFrame, self).__init__(parent, title=title) kep = wx.Bitmap("valami.png", wx.BITMAP_TYPE_ANY) self.bitmapButton = wx.BitmapButton(self, -1, kep) self.bitmapButton.Bind(wx.EVT_TOGGLEBUTTON, self.onClickToggle) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(self.bitmapButton) self.SetSizer(vbox) self.Layout() def onClickToggle(self, event): # eredmény True vagy False allapot = event.GetEventObject().GetValue() print(allapot) class SimpleApp(wx.App): def OnInit(self): self.frame = MainFrame(None, title='váltógomb') self.frame.Show() return True app = SimpleApp() app.MainLoop()
CheckBox
self.cb1 = wx.CheckBox(self, label='Első') self.cb2 = wx.CheckBox(self, label='Második') self.cb3 = wx.CheckBox(self, label='Harmadik') self.Bind(wx.EVT_CHECKBOX, self.onChecked)
Beállítás, lekérdezés:
self.cb.SetValue(True) if self.cb.GetValue(): pass
- checkBox.py
import wx class MainFrame(wx.Frame): def __init__(self, parent, title): super(MainFrame, self).__init__(parent, title=title) self.cb1 = wx.CheckBox(self, label='Első') self.cb2 = wx.CheckBox(self, label='Második') self.cb3 = wx.CheckBox(self, label='Harmadik') self.Bind(wx.EVT_CHECKBOX, self.onChecked) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(self.cb1) vbox.Add(self.cb2) vbox.Add(self.cb3) self.SetSizer(vbox) self.Layout() def onChecked(self, event): cb = event.GetEventObject() print(cb.GetLabel(), cb.GetValue) class SimpleApp(wx.App): def OnInit(self): self.frame = MainFrame(None, title='váltógomb') self.frame.Show() return True app = SimpleApp() app.MainLoop()
RadioButton és RadioBox
Egyéni rádiógombok:
self.rb1 = wx.RadioButton(self, 11, label='Első', style = wx.RB_GROUP) self.rb2 = wx.RadioButton(self, 22, label='Második') self.rb3 = wx.RadioButton(self, 33, label='Harmadik') self.Bind(wx.EVT_RADIOBUTTON, self.onRadiogroup)
Csoportgombok:
feliratok = ['Egy', 'Kettő', 'Három'] self.rbox = wx.RadioBox(self, label='gombok', choices=feliratok) self.rbox.Bind(wx.EVT_RADIOBOX, self.onRadioBox)
- radiobox.py
import wx class MainFrame(wx.Frame): def __init__(self, parent, title): super(MainFrame, self).__init__(parent, title=title) self.rb1 = wx.RadioButton(self, 11, label='Első', style = wx.RB_GROUP) self.rb2 = wx.RadioButton(self, 22, label='Második') self.rb3 = wx.RadioButton(self, 33, label='Harmadik') feliratok = ['Egy', 'Kettő', 'Három'] self.rbox = wx.RadioBox(self, label='gombok', choices=feliratok) self.Bind(wx.EVT_RADIOBUTTON, self.onRadiogroup) self.rbox.Bind(wx.EVT_RADIOBOX, self.onRadioBox) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(self.rb1) vbox.Add(self.rb2) vbox.Add(self.rb3) vbox.Add(self.rbox) self.SetSizer(vbox) self.Layout() def onRadiogroup(self, event): rb = event.GetEventObject() print(rb.GetLabel()) def onRadioBox(self, event): print(self.rbox.GetStringSelection()) class SimpleApp(wx.App): def OnInit(self): self.frame = MainFrame(None, title='váltógomb') self.frame.Show() return True app = SimpleApp() app.MainLoop()