PyQt5:窗口的基本功能


1、設置窗口圖標

  設置窗口圖標需要使用QApplication類下的setWindowIcon方法,會在窗口的左上角顯示圖標。setWindowIcon方法需要傳入一個圖像文件路徑,文件格式可以使用png、jpg等。建議使用png格式,因為png格式支持透明背景。setWindowIcon方法還需要調用QIcon類。代碼如下:

app = QApplication(sys.argv)
...
w.setWindowTitle('串口調試程序')
app.setWindowIcon(QIcon('computerIcon.png'))
...

2、顯示提示框

  提示框就是一個無法獲得焦點的窗口。通常用提示框作為實時幫助或提示使用。例如,當鼠標放在一個按鈕上,就會顯示這個按鈕的作用和使用方法。提示框需要使用QWidget類的setToolTip方法創建。任何可視化控件類都有這個方法,因為可視化控件類是從QWidget類派生的。用法如下:

from PyQt5.QtWidgets import QApplication, QWidget,QToolTip
from PyQt5.QtGui import QIcon,QFont
...
QToolTip.setFont(QFont('Arial',12))
w.setToolTip('測試提示框')
...

 3、關閉窗口

  關閉窗口可以直接使用系統內置的quit方法,如果單擊按鈕關閉窗口,可以直接將按鈕的單擊事件與quit綁定。下面例子是在窗口上添加一個按鈕,單擊該按鈕關閉窗口,同時會退出整個應用程序。

import sys
import PyQt5.QtWidgets as PQW
import PyQt5.QtCore as PQC

if __name__ == '__main__':
    app = PQW.QApplication(sys.argv)
    w = PQW.QWidget()
    w.setGeometry(300,300,300,220)
    w.setWindowTitle('關閉窗口')
    qbtn = PQW.QPushButton('Quit',w)
  # 將按鈕的單擊事件與quit綁定。 qbtn.clicked.connect(PQC.QCoreApplication.instance().quit) qbtn.resize(qbtn.sizeHint()) qbtn.move(
50,50) w.show() sys.exit(app.exec_())

4、消息盒子

  消息盒子(MessageBox)其實就是各種類型的消息對話框,如信息對話框,警告對話框,詢問對話框等等。這些對話框的主要區別主要是對話框的圖標以及按鈕個數。QMessageBox類提供了若干個靜態方法可以顯示各種類型的對話框,如information方法用於顯示信息對話框,waring方法用於顯示告警對話框,question方法用於顯示詢問對話框。這些方法的使用都是類似的。參考下列:

import sys
import PyQt5.QtWidgets as PQW
import PyQt5.QtCore as PQC

class MessageBox(PQW.QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100,100,500,500)
        self.setWindowTitle('消息盒子')
        self.show()

    # 關閉窗口事件
    def closeEvent(self,event):
        # 顯示詢問對話框
        reply = PQW.QMessageBox.question(self,'消息',"你真的要退出嗎?",
                                         PQW.QMessageBox.Yes | PQW.QMessageBox.No,
                                         PQW.QMessageBox.No)
        if reply==PQW.QMessageBox.Yes:
            #調用event的accept方法才會真正關閉窗口
            event.accept()
        else:
            # 調用event的ignore方法取消窗口的關閉動作
            event.ignore()

if __name__ == '__main__':
    app = PQW.QApplication(sys.argv)
    ex = MessageBox()
    sys.exit(app.exec_())

運行顯示效果:

  本例中,采用了面向對象的方式將與窗口相關的代碼都封裝在了自定義的MessageBox類中,這是編寫PyQt5程序的常用方式。

  closeEvent方法是窗口的關閉事件方法,當窗口關閉時,會首先調用該方法。這個方法的調用是自動的,不需要干預,也不需要注冊該方法。方法名字必須叫closeEvent。

  closeEvent方法的第二個參數是與關閉事件有關的對象。其中,accept方法會讓窗口關閉,ignore方法會取消窗口關閉動作。如果這兩個方法都不調用,那么窗口仍然會關閉。

 5、窗口居中

   窗口對象(QWidget)並沒有直接提供讓窗口居中的方法,不過可以曲線救國。根據窗口的寬度,高度,以及屏幕的寬度和高度,計算出窗口左上角的坐標,然后使用窗口對象的move()方法將窗口移動到中心的位置。計算方法如下:

  代碼實現:

import sys
import PyQt5.QtWidgets as PQW

class CenterWindow(PQW.QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(250,250)
        self.center()
        self.setWindowTitle('窗口居中')
        self.show()

    def center(self):
        desktop = app.desktop()
        self.move((desktop.width() - self.width())/2, (desktop.height() - self.height())/2)

if __name__ == '__main__':
    app = PQW.QApplication(sys.argv)
    ex = CenterWindow()
    sys.exit(app.exec_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM