視窗類型
主視窗提供了一個應用程式框架,有著自己的版面配置,可以在版面上新增控制項,例如工具列、功能表或狀態列等等。
主視窗主要分成三種類型。
QWidget
QWidget是另外兩個主視窗類型的父類別,主要用於嵌入主視窗,也可以用於多視窗程式的子視窗,如果你的主視窗不需要工具列、功能表等等,那麼你可以用QWidget作為主視窗。
import sys
from PySide6.QtWidgets import QApplication, QWidget, QLabel
class Widget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Yen.Studio") # 設定主視窗標題
self.resize(400, 300) # 設定主視窗大小
label = QLabel("Hello", self) # 利用QLabel在視窗顯示文字
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec())
QMainWindow
QMainWindow是繼承自QWidget的主視窗類型,它可以包含工具列、功能表等等的控制項,是最常見的主視窗類型。
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Yen.Studio") # 設定主視窗標題
self.resize(400, 300) # 設定主視窗大小
label = QLabel("Hello", self) # 利用QLabel在視窗顯示文字
if __name__ == "__main__":
app = QApplication(sys.argv)
main_win = MainWindow()
main_win.show()
sys.exit(app.exec())
QDialog
QDialog也是繼承自QWidget,它主要的用途在於與使用者進行對話與互動。
import sys
from PySide6.QtWidgets import QApplication, QDialog, QLabel
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Yen.Studio") # 設定主視窗標題
self.resize(400, 300) # 設定主視窗大小
label = QLabel("Hello", self) # 利用QLabel在視窗顯示文字
if __name__ == "__main__":
app = QApplication(sys.argv)
dialog = Dialog()
dialog.show()
sys.exit(app.exec())
如果讀者實際上去跑上面三段程式碼,會發現出來的視窗都長的一模一樣,這是因為我們還沒有加入每種主視窗類型的特色進去。下篇文章開始會從QMainWindow開始介紹,並介紹第一次的訊號和槽機制。