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、初始情況:預設彈出的視窗中心位置為螢幕中心位置
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL5MmMkJmZkJGNhFjN1ITNhNjNmRzNiRzY5kTY1AjM2I2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、移動視窗函數 w.move(x,y)
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中的位置不能為負值,否則會報錯
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'>
4、将新生成視窗中心移動到螢幕中心
已知:螢幕中心 x y
未知:新生成視窗的寬高
①
w.frameGeometry()
:得到新生成視窗的坐标與寬高
輸出:
PyQt5.QtCore.QRect(0, 0, 300, 300)
<class 'PyQt5.QtCore.QRect'>
②
w.frameGeometry().getRect()
:得到坐标及寬高的元組
輸出:
(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()
輸出結果:
(三)視窗圖示設定
圖示素材連結: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()
補充内容:
(1)搜尋函數
①當在代碼中有個列印了一個你不知道的方法時,查詢官方文檔:
https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html#ref-module-index
運作代碼後,列印輸出了:
PyQt5.QtCore.QPoint(959, 519)
此時查找上面連結的文檔找到對應的說明:
②如果此時該文檔中沒有解釋,查詢https://doc.qt.io/qt-5/classes.html
ctrl+F
搜尋内容
如查找QPoint,則找到下面連結:https://doc.qt.io/qt-5/qpoint.html
(2)todo的用法
todo:在代碼注釋中寫入todo表示待解決的事情
在後續編寫代碼的時候就能夠快速定位該位置