# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtWidgets
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.label = QtWidgets.QLabel("Hello World!")
self.label.setAlignment(QtCore.Qt.AlignHCenter)
self.btnQuit = QtWidgets.QPushButton("關閉窗口(&C)")
self.vbox = QtWidgets.QVBoxLayout()
self.vbox.addWidget(self.label)
self.vbox.addWidget(self.btnQuit)
self.setLayout(self.vbox)
self.btnQuit.clicked.connect(QtWidgets.qApp.quit)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow() # 創(chuàng)建窗口類實例
window.setWindowTitle("面向對象編程的窗口創(chuàng)建")
window.resize(300, 70)
window.show() # 顯示窗口
sys.exit(app.exec_()) # 進入主循環(huán)
1.PyQt的程序結構
第1行:指定程序文件的編碼格式类垫。
第2行:載入PyQt5的QtWidgets,QtCore模塊琅坡,比前面的例子多了QtCore,它包括了Qt類中屬性的定義悉患。
第3行:class MyWindow(QtWidgets.QWidget),定義窗口類榆俺,該類繼承自QWidget
第4行:def init(self, parent=None) : 定義窗口類的構造函數售躁,參數 self為類實例,parent為父類茴晋,沒有父類時陪捷,可將其設為null。
第5行:QtWidgets.QWidget.init (self, parent)晃跺,構造函數的第1行揩局,調用父類的構造函數。
第6-9行:創(chuàng)建QLabel掀虎、QPushButton、QVbox對象為了以后調用方便付枫,這些對象定義為類實例的屬性烹玉。
第10-11行:將QLabel、QPushButton添加到QVbox容器中
第12行: self.setLayout(self.vbox) 將QVbox容器添加到窗口中
第13行: self.btnQuit.clicked.connect(QtWidgets.qApp.quit)阐滩,給btnQuit對象的clicked信號句柄賦值二打,本句中是應用程序的退出函數QtWidgets.qApp.quit),稱為槽(slot)。通過QtWidgets的qApp來訪問應用程序對象掂榔。
第15行: if name == "main" : 文件作為腳本直接運行時继效,相關的代碼才會被執(zhí)行;當用import導入到其他模塊中装获,則不會瑞信。