【PyQt5 學習記錄】003:水平布局和獲取屏幕尺寸


 1 #!/usr/bin/python3
 2 # -*- coding:utf-8 -*-
 3 
 4 import sys
 5 from PySide2.QtWidgets import (QApplication,
 6                                QWidget,
 7                                QLabel,
 8                                QDesktopWidget,
 9                                QGroupBox,
10                                QVBoxLayout)
11 
12 
13 class MainWindow(QWidget):
14     def __init__(self):
15         super().__init__()
16 
17         self.screen_size = QLabel(u'尺寸:', self)
18         # 創建一個水平布局
19         v_box_screen = QVBoxLayout()
20         v_box_screen.addWidget(self.screen_size)
21 
22         # 創建一個組件組
23         group_screen = QGroupBox('屏幕:', self)
24         group_screen.setGeometry(10, 10, 120, 50)
25         group_screen.setLayout(v_box_screen)
26 
27         self.window_position = QLabel(u'坐標:', self)
28         self.window_size = QLabel(u'尺寸:', self)
29         # 創建一個水平布局
30         v_box_window = QVBoxLayout()
31         v_box_window.addWidget(self.window_position)
32         v_box_window.addWidget(self.window_size)
33 
34         # 創建一個組件組
35         group_window = QGroupBox('窗口:', self)
36         group_window.setGeometry(10, 70, 120, 80)
37         group_window.setLayout(v_box_window)
38 
39         self.resize(300, 200)
40         self.setWindowTitle('Simple Window')
41 
42         self.information()
43 
44     def information(self):
45         desktop = QDesktopWidget()
46         screen_width = desktop.screenGeometry().width()
47         screen_height = desktop.screenGeometry().height()
48 
49         self.screen_size.setText(u'尺寸:' + str(screen_width) + u' * ' + str(screen_height))
50 
51     def moveEvent(self, *args, **kwargs):
52         """重寫移動函數"""
53         window_x = self.geometry().x()
54         window_y = self.geometry().y()
55         self.window_position.setText(u'坐標:' + str(window_x) + u' * ' + str(window_y))
56 
57     def resizeEvent(self, *args, **kwargs):
58         """重寫改變尺寸函數函數"""
59         window_width = self.geometry().width()
60         window_height = self.geometry().height()
61         self.window_size.setText(u'尺寸:' + str(window_width) + u' * ' + str(window_height))
62 
63 
64 if __name__ == '__main__':
65     app = QApplication()
66     window = MainWindow()
67     window.show()
68     sys.exit(app.exec_())

效果如下圖:

因為想到讓顯示的窗口居中,進而想到獲取顯示屏和窗口的大小。

窗口大小很簡單,QWidget.geometry() 就可以獲得當前窗口的坐標和尺寸,要注意的是在 window.show() 之前獲取是不准的,需要在窗口顯示完之后獲取才能得到准確的坐標和尺寸。

顯示屏的話可以使用 QDesktopWidget.screenGeometry,文檔里說是:

The PySide2.QtWidgets.QDesktopWidget class provides access to screen information on multi-head systems.

 

此外,我為了好看,使用了 QGroupBox ,它貌似無法直接添加組件,需要先設置一個布局,再將組件添加入布局才行。


免責聲明!

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



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