【PyQt5 学习记录】003:水平布局和获取屏幕尺寸
#!/usr/bin/python3
# -*- coding:utf-8 -*- import sys
from PySide2.QtWidgets import (QApplication,
QWidget,
QLabel,
QDesktopWidget,
QGroupBox,
QVBoxLayout) class MainWindow(QWidget):
def __init__(self):
super().__init__() self.screen_size = QLabel(u'尺寸:', self)
# 创建一个水平布局
v_box_screen = QVBoxLayout()
v_box_screen.addWidget(self.screen_size) # 创建一个组件组
group_screen = QGroupBox('屏幕:', self)
group_screen.setGeometry(10, 10, 120, 50)
group_screen.setLayout(v_box_screen) self.window_position = QLabel(u'坐标:', self)
self.window_size = QLabel(u'尺寸:', self)
# 创建一个水平布局
v_box_window = QVBoxLayout()
v_box_window.addWidget(self.window_position)
v_box_window.addWidget(self.window_size) # 创建一个组件组
group_window = QGroupBox('窗口:', self)
group_window.setGeometry(10, 70, 120, 80)
group_window.setLayout(v_box_window) self.resize(300, 200)
self.setWindowTitle('Simple Window') self.information() def information(self):
desktop = QDesktopWidget()
screen_width = desktop.screenGeometry().width()
screen_height = desktop.screenGeometry().height() self.screen_size.setText(u'尺寸:' + str(screen_width) + u' * ' + str(screen_height)) def moveEvent(self, *args, **kwargs):
"""重写移动函数"""
window_x = self.geometry().x()
window_y = self.geometry().y()
self.window_position.setText(u'坐标:' + str(window_x) + u' * ' + str(window_y)) def resizeEvent(self, *args, **kwargs):
"""重写改变尺寸函数函数"""
window_width = self.geometry().width()
window_height = self.geometry().height()
self.window_size.setText(u'尺寸:' + str(window_width) + u' * ' + str(window_height)) if __name__ == '__main__':
app = QApplication()
window = MainWindow()
window.show()
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 ,它貌似无法直接添加组件,需要先设置一个布局,再将组件添加入布局才行。
【PyQt5 学习记录】003:水平布局和获取屏幕尺寸的更多相关文章
- Android计量单位px,in,mm,pt,dp,dip,sp和获取屏幕尺寸与密度
###########################################Android计量单位########################################### px ...
- 工具类 dp转px 获取图片实际尺寸 获取屏幕尺寸
dp转px public class Dp2pxUtils { public static int Dp2Px(Context context, float dp) { final float sca ...
- 微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
原文:http://www.wxapp-union.com/portal.php?mod=view&aid=360 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于屏 ...
- javascript中获取屏幕尺寸
Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 屏幕的有效宽:window.screen.availHeight屏幕的有效高:window.screen.availWid ...
- Android 获取屏幕尺寸与密度
android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲 ...
- android 获取屏幕尺寸
文章转载自:http://blog.csdn.net/congqingbin/article/details/7474276// 通过WindowManager获取 DisplayMetrics dm ...
- 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...
- Android 获取屏幕尺寸与密度(转载)
android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一 ...
- 微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
wxml: <image style="width: {{imagewidth}}px; height: {{imageheight}}px;" src="{{i ...
随机推荐
- mybatis一级缓存与二级缓存的原理
1.mybatis中的缓存是在mybatis框架中的Executor中来实现的,我们来看一下Executor的继承图 2.通过以上类图我们可以发现Executor接口下有两大实现类BaseExecut ...
- 架构师养成记--26.vi/vim相关操作
vi/vim命令模式插入模式 aio编辑模式 : aio就是vi/vim的插入模式命令 作用a 在光标后附加文本A 在本行末附加文本i 在光标钱插 ...
- linux下不同颜色文件的性质
绿色文件: 可执行文件,可执行的程序 红色文件:压缩文件或者包文件 蓝色文件:目录 白色文件:一般性文件,如文本文件,配置文件,源码文件等 浅蓝色文件:链接文件,主要是使用ln命令建立的文件 红色闪烁 ...
- [转] flume使用(六):后台启动及日志查看
[From] https://blog.csdn.net/maoyuanming0806/article/details/80807087 处理的问题flume 普通方式启动会有自己自动停掉的问题,这 ...
- 四大组件之Activity——生命周期
1.完整的Activity生命周期 包括onCreate() -> onStart() -> onResume() -> onPause() -> onStop -> o ...
- select2 使用教程
用了这么久的Select2插件,也该写篇文章总结总结.当初感觉Select2不是特别好用,但又找不到比它更好的下拉框插件. 在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下 ...
- Linux 命令 su 和 sudo 比较
su : 可以用来切换到任何用户,但是要求输入目标用户的密码 比如:su - su - root (等价 su -) su - user su root 与 su - root 的区别在于,后者不切换 ...
- python中的生成器(一)
我们先考虑一个场景: 有个情景需要循环输出1——10. 这里给两种方法: list1 = [1,2,3,4,5,6,7,8,9,10] for i in list1: print(i) for i i ...
- C# virtual abstract
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...
- 有关索引的DMV
转自:http://www.cnblogs.com/CareySon/archive/2012/05/17/2505981.html#commentform 有关索引的DMV 1.查看那些被大量更新, ...