Bismillah.
Pada tutorial PySide sebelum-sebelumnya, kita telah mencoba membuat Window. Akan tetapi window yang kita gunakan masih menggunakan QWidget. Pada seri tutorial kali ini, saya akan membahas sedikit tentang QMainWindow dan contoh cara penggunaannya.
Apa itu Main Window?
QMainWindow adalah window utama yang menyediakan struktur basic (framework) untuk membangun user interface pada aplikasi PySide. Qt memiliki kelas PySide.QtGui.QMainWindow
dan kelas-kelas lain yang berhubungan dengannya untuk memanajemen window-window pada aplikasi kita. Di mana dengan QMainWindow (yang secara default memiliki layout sendiri), kita bisa menambahkan Toolbar (Pyside.QtGui.QToolbar
), DockWidget (PySide.QtGui.QDockWidget
), Menu bar (PySide.QtGui.QMenuBar
), dan Status bar (PySide. QtGui.QStatusBar
). QMainWindow juga memiliki center area yang bisa digunakan sebagai tempat widget apa saja. [1]
Note: Ketika membuat Main Window, anda harus dam wajib mendefinisikan center area. Meskipun hanya sebagai placeholder saja.
Membuat Main Window
QMainWindow adalah kelas turunan dari PySide.QtGui.QWidget
. Jadi cara mendeklarasikan window masih sama dengan tutorial-tutorial sebelumnya.
mainWindow = QtGui.QMainWindow()
mainWindow.resize(800, 600)
mainWindow.setWindowTitle('Tutorial PySide')
mainWindow.show()
Pada kode di atas, kita membuat Main Window dengan ukuran 800x600 px. Dengan judul window Tutorial PySide. Lalu menampilkannya di koordinat default. Kita bisa menambahkan icon pada main window tersebut, atau juga bisa menampilkan main window pada bagian tengah seperti pada tutorial sebelumnya.
Note: Satu aplikasi hanya bisa memiliki satu Main Window
Center Area
Untuk menentukan widget yang akan kita tempatkan di bagian tengah, kita bisa memanggil fungsi setCentralWidget(widget)
. Parameternya adalah instance dari kelas PySide.QtGui.QWidget
atau dari kelas turunannya.
Misal, saya akan menempatkan PySide.QtGui.QTextEdit
di bagian tengah.
# menjadikan text edit sebagai central widget
textEdit = QtGui.QTextEdit("Tulis sesuatu di sini")
mainWindow.setCentralWidget(textEdit)
Atau saya juga bisa menampilkan turunan dari kelas QWidget yang lainnya, yaitu QCalendarWidget.
# menjadikan calendar widget sebagai central widget
calendar = QtGui.QCalendarWidget()
mainWindow.setCentralWidget(calendar)
Kode Program
Berikut kode program selengkapnya.
Versi Prosedural
import sys
from PySide import QtGui, QtCore
"""
Jago Ngoding tutorial PySide bahasa Indonesia
author: Ibnu Jakaria
"""
app = QtGui.QApplication(sys.argv)
mainWindow = QtGui.QMainWindow()
mainWindow.resize(800, 600)
mainWindow.setWindowTitle('Tutorial PySide')
# menjadikan text edit sebagai central widget
# textEdit = QtGui.QTextEdit("Tulis sesuatu di sini")
# mainWindow.setCentralWidget(textEdit)
# menjadikan calendar widget sebagai central widget
calendar = QtGui.QCalendarWidget()
mainWindow.setCentralWidget(calendar)
mainWindow.show()
sys.exit(app.exec_())
Versi OOP
import sys
from PySide import QtGui, QtCore
"""
Jago Ngoding tutorial PySide berbahasa Indonesia
author: Ibnu Jakaria
"""
class JendelaUtama(QtGui.QMainWindow):
def __init__(self):
super(JendelaUtama, self).__init__()
self.siapkanUI()
self.show()
def siapkanUI(self):
self.resize(800, 600)
self.setWindowTitle('Tutorial PySide')
self.siapkanBagianTengah()
def siapkanBagianTengah(self):
# menjadikan text edit sebagai central widget
# self.textEdit = QtGui.QTextEdit("Tulis sesuatu di sini")
# self.setCentralWidget(self.textEdit)
# menjadikan calendar widget sebagai central widget
self.calendar = QtGui.QCalendarWidget()
self.setCentralWidget(self.calendar)
app = QtGui.QApplication(sys.argv)
JendelaUtama = JendelaUtama()
JendelaUtama.show()
sys.exit(app.exec_())
Sementara ini saja tentang Main Window. Selanjutnya, insyaallah saya akan membahas tentang Menu dan Toolbar.
Referensi
[1] https://srinikom.github.io/pyside-docs/PySide/QtGui/QMainWindow.html