Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:python:wxpython_gui:wxpython_widgetek_i

< wxPython

wxPython widgetek I

  • Szerző: Sallai András
  • Copyright © Sallai András, 2020, 2021
  • Licenc: GNU Free Documentation License 1.3

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()

Forrás

oktatas/programozas/python/wxpython_gui/wxpython_widgetek_i.txt · Utolsó módosítás: 2021/03/15 09:22 szerkesztette: admin