wxPython - Tombol
Widget tombol paling banyak digunakan di semua antarmuka GUI. Ini menangkap peristiwa klik yang dihasilkan oleh pengguna. Penggunaannya yang paling jelas adalah untuk memicu fungsi penangan yang terikat padanya.
Perpustakaan kelas wxPython menyediakan berbagai jenis tombol. Ada tombol tradisional yang sederhana,wx.Buttonobjek kelas, yang membawa beberapa teks sebagai judulnya. Tombol dua status juga tersedia, yang dinamai sebagaiwx.ToggleButton. Keadaan tertekan atau tertekan dapat diidentifikasi dengan fungsi eventhandler.
Jenis tombol lainnya, wx.BitmapButton menampilkan bitmap (gambar) sebagai ikon di wajahnya.
Konstruktor untuk kelas wx.Button dan kelas wx.ToggleButton mengambil argumen berikut -
Wx.Button(parent, id, label, pos, size, style)
Ini adalah beberapa metode penting dari kelas wx.Button -
SN | Metode & Deskripsi |
---|---|
1 | SetLabel() Setel judul tombol secara terprogram |
2 | GetLabel() Mengembalikan keterangan tombol |
3 | SetDefault() Tombol disetel ke default untuk jendela tingkat atas. Mengemulasi acara klik saat menekan tombol Enter |
Dua metode penting dari kelas wx.ToggleButton adalah -
SN | Metode & Deskripsi |
---|---|
1 | GetValue() Mengembalikan status tombol sakelar (on / off) |
2 | SetValue() Menetapkan status tombol secara terprogram |
Untuk membuat tombol bitmap, pertama-tama, objek bitmap perlu dibuat dari file gambar.
Variasi konstruktor kelas wx.Bitmap berikut ini paling umum digunakan -
Wx.Bitmap(fiiename, wx.BITMAP_TYPE)
Beberapa dari konstanta jenis bitmap standar adalah -
wx.BITMAP_TYPE_BMP |
wx.BITMAP_TYPE_ICO |
wx.BITMAP_TYPE_CUR |
wx.BITMAP_TYPE_TIFF |
wx.BITMAP_TYPE_TIF |
wx.BITMAP_TYPE_GIF |
wx.BITMAP_TYPE_PNG |
wx.BITMAP_TYPE_JPEG |
wx.BITMAP_TYPE_PCX |
wx.BITMAP_TYPE_ICON |
wx.BITMAP_TYPE_ANY |
Objek bitmap ini digunakan sebagai salah satu parameter untuk konstruktor kelas wx.BitmapButton.
Wx.BitmapButton(parent, id, bitmap, pos, size, style)
Pada beberapa platform OS, tombol bitmap dapat menampilkan bitmap dan label. Metode SetLabel () menetapkan judul. Di platform lain, ini berfungsi sebagai label internal.
Tombol normal serta tombol bitmap mengeluarkan wx.CommandEvent. Pengikat EVT_BUTTON mengaitkan fungsi penangan dengannya.
Tombol sakelar di sisi lain menggunakan pengikat wx.TOGGLEBUTTON untuk penanganan acara.
Dalam contoh berikut, tombol dari ketiga jenis ditempatkan dalam pengukur ukuran kotak vertikal sebuah panel.
Objek tombol sederhana dibuat menggunakan pernyataan -
self.btn = wx.Button(panel, -1, "click Me")
Tombol Toggle dibangun dengan pernyataan berikut -
self.tbtn = wx.ToggleButton(panel , -1, "click to on")
Tombol-tombol ini ditambahkan ke pengukur vertikal menggunakan pernyataan berikut -
vbox.Add(self.btn,0,wx.ALIGN_CENTER)
vbox.Add(self.tbtn,0,wx.EXPAND|wx.ALIGN_CENTER)
Note - Karena bendera wx.EXPAND, tombol sakelar menempati seluruh lebar bingkai.
Menggunakan EVT_BUTTON dan EVT_TOGGLEBUTTON pengikat mereka dikaitkan dengan masing-masing penangan.
self.btn.Bind(wx.EVT_BUTTON,self.OnClicked)
self.tbtn.Bind(wx.EVT_TOGGLEBUTTON,self.OnToggle)
Tiga tombol bitmap ditambahkan ke pengukur ukuran kotak horizontal. Tombol-tombol ini menampilkan gambar sebagai ikon sebagai keterangannya.
bmp = wx.Bitmap("NEW.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
bmp1 = wx.Bitmap("OPEN.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn1 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp1,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
bmp2 = wx.Bitmap("SAVE.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn2 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp2,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
Acara klik dari ketiga tombol ini diarahkan ke metode OnClicked ().
self.bmpbtn.Bind(wx.EVT_BUTTON, self.OnClicked)
self.bmpbtn1.Bind(wx.EVT_BUTTON, self.OnClicked)
self.bmpbtn2.Bind(wx.EVT_BUTTON, self.OnClicked)
Label internal tombol-tombol ini masing-masing disetel ke BARU, BUKA dan SIMPAN.
Fungsi penanganan peristiwa OnClicked () mengambil label tombol sumber, yang menyebabkan peristiwa klik. Label itu tercetak di konsol.
def OnClicked(self, event):
btn = event.GetEventObject().GetLabel()
print "Label of pressed button = ",btn
Pengendali kejadian OnToggle () dipicu saat tombol sakelar diklik. Statusnya dibaca oleh metode GetValue () dan karenanya, judul tombol disetel.
def OnToggle(self,event):
state = event.GetEventObject().GetValue()
if state == True:
print "off"
event.GetEventObject().SetLabel("click to off")
else:
print "on"
event.GetEventObject().SetLabel("click to on")
Daftar kode lengkapnya adalah sebagai berikut -
import wx
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title,size = (200,150))
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.btn = wx.Button(panel,-1,"click Me")
vbox.Add(self.btn,0,wx.ALIGN_CENTER)
self.btn.Bind(wx.EVT_BUTTON,self.OnClicked)
self.tbtn = wx.ToggleButton(panel , -1, "click to on")
vbox.Add(self.tbtn,0,wx.EXPAND|wx.ALIGN_CENTER)
self.tbtn.Bind(wx.EVT_TOGGLEBUTTON,self.OnToggle)
hbox = wx.BoxSizer(wx.HORIZONTAL)
bmp = wx.Bitmap("NEW.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
hbox.Add(self.bmpbtn,0,wx.ALIGN_CENTER)
self.bmpbtn.Bind(wx.EVT_BUTTON,self.OnClicked)
self.bmpbtn.SetLabel("NEW")
bmp1 = wx.Bitmap("OPEN.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn1 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp1,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
hbox.Add(self.bmpbtn1,0,wx.ALIGN_CENTER)
self.bmpbtn1.Bind(wx.EVT_BUTTON,self.OnClicked)
self.bmpbtn1.SetLabel("OPEN")
bmp2 = wx.Bitmap("SAVE.BMP", wx.BITMAP_TYPE_BMP)
self.bmpbtn2 = wx.BitmapButton(panel, id = wx.ID_ANY, bitmap = bmp2,
size = (bmp.GetWidth()+10, bmp.GetHeight()+10))
hbox.Add(self.bmpbtn2,0,wx.ALIGN_CENTER)
self.bmpbtn2.Bind(wx.EVT_BUTTON,self.OnClicked)
self.bmpbtn2.SetLabel("SAVE")
vbox.Add(hbox,1,wx.ALIGN_CENTER)
panel.SetSizer(vbox)
self.Centre()
self.Show()
self.Fit()
def OnClicked(self, event):
btn = event.GetEventObject().GetLabel()
print "Label of pressed button = ",btn
def OnToggle(self,event):
state = event.GetEventObject().GetValue()
if state == True:
print "Toggle button state off"
event.GetEventObject().SetLabel("click to off")
else:
print " Toggle button state on"
event.GetEventObject().SetLabel("click to on")
app = wx.App()
Mywin(None, 'Button demo')
app.MainLoop()
Kode di atas menghasilkan keluaran sebagai berikut -
Label tombol yang ditekan = klik Saya
Matikan status tombol
Hidupkan status tombol
Label tombol yang ditekan = BARU
Label tombol yang ditekan = OPEN
Label tombol yang ditekan = SIMPAN