专栏首页AnRFDevPyQt 适配不同屏幕分辨率

PyQt 适配不同屏幕分辨率

在宽高为1366*768下设计开发的界面,到了2860*1620屏幕下会显示不正常。

因为像素密度不同,2860*1620屏幕显示出来的控件很小。

适配方法 - 根据当前屏幕调整控件大小和位置

初始化时获取到当前屏幕的宽高像素值。

与原像素值相比求出比例self.ratio_widself.ratio_height

找出所有的QWidget self.findChildren(QWidget),遍历来改变大小和位置。

from PyQt4.QtGui import QMainWindow, QApplication, QWidget

class ReMainWindow(QMainWindow):

    def __init__(self, parent=None):
        # ...........
        self.app = QApplication.instance()  # Calculate the ratio. Design screen is [1366, 768]
        screen_resolution = self.app.desktop().screenGeometry()
        self.hw_ratio = 768 / 1366  # height / width
        self.ratio_wid = screen_resolution.width() / 1366
        if self.ratio_wid < 1:
            self.ratio_wid = 1
        self.ratio_height = screen_resolution.height() / 768
        if self.ratio_height < 1:
            self.ratio_height = 1

    def _init_ui_size(self):
        """ Travel all the widgets and resize according to the ratio """
        self._resize_with_ratio(self)
        for q_widget in self.findChildren(QWidget):
            # print q_widget.objectName()
            self._resize_with_ratio(q_widget)
            self._move_with_ratio(q_widget)

            # Don't deal with the text browser
            # for q_widget in self.findChildren(QAbstractScrollArea):
            #     print q_widget.objectName()
            #     self._resize_with_ratio(q_widget)
            #     self._move_with_ratio(q_widget)

    def _resize_with_ratio(self, input_ui):
        input_ui.resize(input_ui.width() * self.ratio_wid, input_ui.height() * self.ratio_height)

    def _move_with_ratio(self, input_ui):
        input_ui.move(input_ui.x() * self.ratio_wid, input_ui.y() * self.ratio_height)

实践发现,不需要对QTextBrowser所属的QAbstractScrollArea处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • android多屏幕分辨率适配

    做android开发,开源嘛,满市场都是凌乱的机型,总少不了适配这样或那样的型号。在这里分享一下自己在开发中用到的方法。 首先要介绍一下drawable-md...

    xiangzhihong
  • iPhone屏幕分辨率及适配技术

    一般情况下,我们说iPhone 8的屏幕是4.7寸屏,就是指iPhone 8的屏幕对角线为4.7英寸。 屏幕的单位是以英寸为单位,换算关系:1 inch = ...

    用户5521279
  • cocos2d-js 3.0 屏幕适配方案 分辨率适应

    用户1258909
  • Android屏幕适配工具类 Android自动生成不同分辨率的值

    本文实例为大家分享了Android屏幕适配工具类的具体代码,供大家参考,具体内容如下

    砸漏
  • 适配移动端不同分辨率的解决方案

    Theone67
  • 提示Android屏幕适配方案分析

    Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080...

    用户2356368
  • Android碎片化之屏幕适配

    现如今,因Android系统的开放性,市场上出现了不同厂商出厂的各种android版本、分辨率、型号等设备。那对我们开发来说,碎片化绝对是一个让人头脑炸裂的问题...

    优测utest
  • Cypress学习13-viewport设置不同分辨率,适配不同设备,手机型号

    通常web测试需测下在不同设备,手机上,不同的分辨率显示效果,可以用viewport()方法实现

    上海-悠悠
  • Unity ugui屏幕适配与世界坐标到ugui屏幕坐标的转换

    我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率。

    汐夜koshio
  • 实用Android 屏幕适配方案分享

    实用Android 屏幕适配方案分享 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案,已用在一款成熟互联网应用...

    xiangzhihong
  • 实用Android 屏幕适配方案分享

    真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案,已用在一款成熟互联网应用中,效果还不错。 ? 说起andro...

    xiangzhihong
  • 谈谈Android屏幕适配的那些事,我们到底该怎么去选择

    每个Android程序员都会遇见一个棘手的问题,那就是手机适配。因为现在出现了许多分辨率的手机,所以我们必须得考虑到各种分辨率的手机适配,这对于程序员来说是一个...

    Android技术干货分享
  • OpenGL ES for Android 相机预览适配不同分辨率的手机

    上一篇讲到OpenGL ES for Android 相机预览,相机的预览分辨率设置为1280*720,大家有没有想过如果将GLSurfaceView设置为正方...

    老孟Flutter
  • Android TV开发总结【适配】

    Android 的屏幕适配是指适配不同机顶盒 UI 框架层输出的分辨率和 dpi,而不是适配不同分辨率的电视机(电视机的适配交由机顶盒本身完成,和各个应用无关)

    先知先觉
  • Unity3D-关于项目的屏幕适配(看我就够了)

    屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知识点:

    孙寅
  • 有效解决3D游戏边缘锯齿现象及全面理解LayaAir引擎游戏屏幕适配!

    有的时候看到一些3D游戏锯齿感特别明显,与一些开发者沟通后发现,其实很多人并不清楚怎么能去掉明显的锯齿感,而这并不是只有新开发者才遇到的问题,很多游戏研发经验丰...

    Layabox Charley
  • 详解LayaAir引擎游戏屏幕适配,及有效抗锯齿

    有的时候看到一些3D游戏锯齿感特别明显,与一些开发者沟通后发现,其实很多人并不清楚怎么能去掉明显的锯齿感,而这并不是只有新开发者才遇到的问题,很多游戏研发经验丰...

    Layabox Charley
  • android系统如何自适应屏幕大小

    1、屏幕相关概念 1.1分辨率 是指屏幕上有横竖各有多少个像素 1.2屏幕尺寸 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3....

    用户2192970
  • Android开发笔记(八十一)屏幕规格适配

    适配各种屏幕规格,首先要取到系统对于屏幕的配置信息,这些配置可从工具类Configuration获得。Configuration对象在Activity中通过...

    用户4464237

扫码关注云+社区

领取腾讯云代金券