天天看點

pyqt5 學習筆記三 (視窗設定、視窗圖示)

pyqt5 學習筆記三 (w.resize()、w.move()、視窗設定、視窗圖示)

目錄

    • pyqt5 學習筆記三 (w.resize()、w.move()、視窗設定、視窗圖示)
      • (一)設定視窗大小
      • (二)設定視窗位置
        • 1、初始情況:預設彈出的視窗中心位置為螢幕中心位置
        • 2、移動視窗函數 `w.move(x,y) `
        • 3、将新生成視窗左上角移動到螢幕中心
        • 4、将新生成視窗中心移動到螢幕中心
      • (三)視窗圖示設定

寫在前面:

①本教程使用pycharm編譯器進行pyqt5的學習,安裝教程請大家自行百度

②本系列部落格根據B站王銘東部落客教程學習 學習代碼 筆記3

連結:https://pan.baidu.com/s/1i3y4mI_9N84iAC6tav-j8Q

提取碼:gupx

資料:

【1】B站教程

【2】B站教程配套課件

【3】PyQt官網的所有子產品 (有部分内容沒有補充進去)

【4】C++具體實作的API文檔

(一)設定視窗大小

w.resize(800, 800)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit
if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = QWidget()
   w.setWindowTitle("第一個PyQt")
   w.resize(800, 800)   # (w,h)
   w.show()
   app.exec()
           

(二)設定視窗位置

1、初始情況:預設彈出的視窗中心位置為螢幕中心位置

pyqt5 學習筆記三 (視窗設定、視窗圖示)

2、移動視窗函數

w.move(x,y)

将視窗位置移動到螢幕左上角

w.move(0, 0)

import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = QWidget()
   w.setWindowTitle("第一個PyQt")
   w.resize(300, 300)  # resize(w,h)
   # 調整視窗在螢幕左上角
   w.move(0, 0)
   w.show()
   app.exec()
           

其中move中的位置不能為負值,否則會報錯

pyqt5 學習筆記三 (視窗設定、視窗圖示)

3、将新生成視窗左上角移動到螢幕中心

QDesktopWidget().availableGeometry().center()

center_pointer.x()

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget
if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = QWidget()
   w.setWindowTitle("第一個PyQt")
   w.resize(300, 300)  # resize(w,h)
   # 調整視窗在螢幕左上角
   w.move(0, 0)
   # 調整視窗在螢幕中央顯示
   # QDesktopWidget() 目前螢幕元件 螢幕可用的區域 中心坐标
   center_pointer = QDesktopWidget().availableGeometry().center()   # todo
   print(center_pointer)
   x = center_pointer.x()
   y = center_pointer.y()
   w.move(x, y)
   # 顯示視窗
   w.show()
   # 程式進行循環等待狀态
   app.exec()
           

QDesktopWidget().availableGeometry().center()

得到螢幕元件可用區域的中心位置

center_pointer = QDesktopWidget().availableGeometry().center() 
   print(center_pointer)
   print(type(center_pointer))
           

center_pointer.x()

:得到center_pointer的橫縱坐标

x = center_pointer.x()
   y = center_pointer.y()
   w.move(x, y)  # 視窗左上角在螢幕中心
           

輸出:新生成視窗的左上角顯示在螢幕中心位置

PyQt5.QtCore.QPoint(959, 519)
<class 'PyQt5.QtCore.QPoint'>
           
pyqt5 學習筆記三 (視窗設定、視窗圖示)

4、将新生成視窗中心移動到螢幕中心

已知:螢幕中心 x y

未知:新生成視窗的寬高

w.frameGeometry()

:得到新生成視窗的坐标與寬高

輸出:

PyQt5.QtCore.QRect(0, 0, 300, 300)
<class 'PyQt5.QtCore.QRect'>
           

w.frameGeometry().getRect()

:得到坐标及寬高的元組

pyqt5 學習筆記三 (視窗設定、視窗圖示)

輸出:

(0, 0, 300, 300)
<class 'tuple'>
           

代碼:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget
if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = QWidget()
   w.setWindowTitle("第一個PyQt")
   w.resize(300, 300)  # resize(w,h)
   # 調整視窗在螢幕左上角
   w.move(0, 0)
   # 調整視窗在螢幕中央顯示
   # QDesktopWidget() 目前螢幕元件 螢幕可用的區域 中心坐标
   center_pointer = QDesktopWidget().availableGeometry().center()  # todo
   print(center_pointer)
   print(type(center_pointer))
   x = center_pointer.x()
   y = center_pointer.y()
   # w.move(x, y)  # 視窗左上角在螢幕中心
   # w.move(x - 300 / 2, y - 300 / 2)  # 将視窗中心移動到螢幕中心
   print(w.frameGeometry())  # 得到窗戶的位置與大小
   print(type(w.frameGeometry()))
   print(w.frameGeometry().getRect())  # 将位置與大小寫作(x,y,width,height)
   print(type(w.frameGeometry().getRect()))  # 列印出來為元組
   p_x, p_y, width, height = w.frameGeometry().getRect()  # 拆包
   w.move(x - width / 2, y - height / 2)  # 将視窗中心移動到螢幕中心
   # 顯示視窗
   w.show()
   # 程式進行循環等待狀态
   app.exec()
           

輸出結果:

pyqt5 學習筆記三 (視窗設定、視窗圖示)

(三)視窗圖示設定

圖示素材連結:https://igoutu.cn/icons

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("圖示")
    # 設定圖示
    w.setWindowIcon(QIcon('icon.png'))
    w.show()
    app.exec()
           
pyqt5 學習筆記三 (視窗設定、視窗圖示)

補充内容:

(1)搜尋函數

①當在代碼中有個列印了一個你不知道的方法時,查詢官方文檔:

https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html#ref-module-index

運作代碼後,列印輸出了:

PyQt5.QtCore.QPoint(959, 519)

此時查找上面連結的文檔找到對應的說明:

pyqt5 學習筆記三 (視窗設定、視窗圖示)

②如果此時該文檔中沒有解釋,查詢https://doc.qt.io/qt-5/classes.html

ctrl+F

搜尋内容

如查找QPoint,則找到下面連結:https://doc.qt.io/qt-5/qpoint.html

pyqt5 學習筆記三 (視窗設定、視窗圖示)

(2)todo的用法

todo:在代碼注釋中寫入todo表示待解決的事情

pyqt5 學習筆記三 (視窗設定、視窗圖示)

在後續編寫代碼的時候就能夠快速定位該位置

pyqt5 學習筆記三 (視窗設定、視窗圖示)

繼續閱讀