首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何确定PyQt5对话框是否会在屏幕外显示

如何确定PyQt5对话框是否会在屏幕外显示
EN

Stack Overflow用户
提问于 2019-11-05 16:05:40
回答 1查看 312关注 0票数 3

当加载带有保存位置坐标的PyQt5对话框时,窗体有时会从屏幕外加载,例如当用户将对话框位置保存在具有3台监视器的计算机上,然后在只有一个监视器的不同设备上再次打开该对话框。

QDesktopWidget().availableGeometry()对象给出了一个屏幕的尺寸--例如(0,0,1920,1040) --尽管我有三个屏幕。

form.geometry()返回当前相对于主屏幕的位置及其尺寸。在我的示例中,主屏幕是中央屏幕,表单位于(2395,184,210,200)。如果我保存这些值,当我从我的笔记本电脑加载表单时,这个位置将被关闭。

如何确定当前设备是否可以以保存的值显示小部件?

编辑-附加备注:

我查看了height()width()属性以及screenCount()primaryScreen()属性,这些属性将提供更多信息,但我尚未发现一个属性,它将告诉我x/y点是否将实际显示在活动屏幕上。我可能需要使用Windows来获取rect值吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-06 08:01:19

感谢@ekhumoro在正确方向上的提示,我发现了以下作品(不正确!)见下文修订本):

代码语言:javascript
运行
AI代码解释
复制
# Get the screen real estate available to the form
ag = QDesktopWidget().availableGeometry(form)
# If the saved values fall within that real estate, we can
# safely assign the values to the form's geometry
if ag.contains(QRect(x_pos, y_pos, h_dim, v_dim)):
    form.setGeometry(x_pos, y_pos, h_dim, v_dim)
else:
    # Otherwise, set it to default values that ARE available
    form.setGeometry(ag.x(), ag.y(), h_dim, v_dim)

QDesktopWidget对象与QApplication.desktop()对象相同,并从PyQt5.QtWidget派生。QRect是从PyQt5.QtCore导入的

修订:首先需要将表单的几何设置为保存的值,然后查看它是否属于可用的几何图形。如果窗体被保存到除主屏幕以外的任何地方,每次都会失败。

代码语言:javascript
运行
AI代码解释
复制
    # Set the form to the saved position
    form.setGeometry(x_pos, y_pos, h_dim, v_dim)
    # Get the screen real estate available to the form
    ag = QDesktopWidget().availableGeometry(form)
    # If the saved values have placed the form within  
    # that real estate, we can leave it alone.
    if not ag.contains(QRect(x_pos, y_pos, h_dim, v_dim)):
        # Otherwise, set it to default values that ARE available
        form.setGeometry(ag.x(), ag.y(), h_dim, v_dim)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58721258

复制
相关文章
PyQt5 模态对话框
所谓的模态对话框是指,一旦调用该对话框,它就会成为应用程序唯一能与用户进行交互的部件。在关闭对话框之前,用户都不能使用应用程序的其他部件。模态对话框是最简单的,因为会阻塞与对话框的父窗口及父窗口的兄弟窗口之间的其他任何交互,所以可降低对那些正在使用的数据在后台被修改的风险。模态对话框的缺点是用户不能实时地看到修改效果。
用户6021899
2019/08/13
2.4K0
PyQt5 截取屏幕
本篇介绍如何用 PyQt5 截屏。 下面两行是PyQt 截屏的关键代码: screen= QtWidgets.QApplication.primaryScreen()#PyQt5 screen.gra
用户6021899
2019/08/14
4.5K0
unity 确定与取消对话框
UnityEvent本质上是继承自UnityEventBase的类,它的AddListener()方法能够注册UnityAction,RemoveListener能够取消注册UnityAction,还有Invoke()方法能够一次性调用所有注册了的UnityAction。
立羽
2023/08/24
2250
PyQT5对话框
TomatoCool
2023/07/30
2640
PyQT5对话框
如何确定EasyCVR本地流媒体是否启动成功?
EasyCVR视频协议融合平台不仅支持常规协议的接入,我们还拓展了海康SDK、大华SDK、Ehome等私有协议。如果前端设备协议不同且数量较多,则可以通过EasyCVR平台来对所有视频通道做整合和统一管理。而且,EasyCVR提供了丰富的API接口,用户均可通过接口文档进行调用。
TSINGSEE青犀视频
2021/11/11
6780
PyQt5 对话框 数据验证
本篇介绍PyQt5对话框的数据合法性的验证。有两种验证方式:预防式验证(preventative)和 提交后验证 (post-mortem)。预防式验证适合于单个部件的数据验证,可以通过选择合适的部件类型,设置最大字符长度或者数字的大小范围,应用正则表达式等等来进行预防式验证。提交后验证可应用于单个控件,也可应用于多部件交叉验证。两种验证策略可单独或者组合使用。
用户6021899
2019/08/14
1.2K0
PyQt5 文件对话框QFileDialog
4个参数分别是父控件、标题、起始路径、文件扩展名过滤。返回值是由两个字符串构成的元组。元组第一个元素是文件名,第二个是文件类型名。
用户6021899
2019/08/14
7.3K0
显示打印对话框
Montaque(Rain + Man=Rainman)  http://search.csdn.net/Expert/topic/1756/1756799.xml?temp=.8004572 加
Java架构师必看
2021/03/22
1.1K0
PyQt5 消息对话框QMessageBox
本篇讲解PyQt中预置的5种消息对话框: QMessageBox.about 关于 QMessageBox.ctitical危险 QMessageBox.information 信息框 QMessag
用户6021899
2019/08/13
1.8K0
PyQt5 输入对话框QInputDialog
(int, bool ok) QInputDialog.getInt (QWidget parent, QString title, QString label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, Qt.WindowFlags flags = 0)
用户6021899
2019/08/14
2.7K0
如何在 Bash Shell 脚本中显示对话框
这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子。使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互。这两个工具的不同之处在于显示消息框或者对话框的方式。Zenity用GTK工具包创建图形用户界面,而whiptail则在终端窗口内创建消息框。
哲洛不闹
2018/09/14
2.7K0
如何在 Bash Shell 脚本中显示对话框
jquery实现让导航超出显示范围外时自动贴在屏幕最顶上
  经常会遇到这样的情况,当页面展示内容过长时,想点导航切换栏目,就得把滚动条拉回到顶上,这样操作总不太人性化,能不能让导航超出显示范围外时自动贴在屏幕最顶上呢?答案肯定是能的。如果不太明白,把滚动条拉到下面点,看下我博客是效果就明白了。
胡尐睿丶
2022/03/23
8630
jquery实现让导航超出显示范围外时自动贴在屏幕最顶上
调整屏幕显示亮度
使用SeekBar控件来控制 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_pa
听着music睡
2018/05/18
9270
PyQt5 非模态对话框(apply 型)
如果希望用户可以重复更改对话框中的参数并能马上看到修改结果,那么就要使用非模态对话框,这样用户就可以按照他们喜欢的方式来持续不断地修改数据并验证修改的结果了。
用户6021899
2019/08/13
1.3K0
Kibana:Canvas 大屏幕显示
Elastic Visulization 提供了强大的可视化工具供我们来展示及分析数据,但是 Elastic Canvas可以给我们提供大屏幕显示的方式,并提供了无限的联想。它可以让我们自由地定制我们想要的大屏幕。在今天的文章中,我们来讲述一下如何实现一个简单的Canvas示例。
Jared.Tan
2020/06/17
2.1K0
Kibana:Canvas 大屏幕显示
PyQt5 非模态对话框(live 型)
本篇介绍非模态“实时”(live)对话框。与上一篇讲的”apply型“非模态对话框的区别是,非模态“实时”(live)对话框没有任何按钮,且所做的任何改变会自动、即刻得到应用。
用户6021899
2019/08/14
1.6K0
RabbitMQ是如何确定消息是否投递到队列中的
在使用RabbitMQ消息中间件时,因为消息的投递是异步的,默认情况下,RabbitMQ会删除那些无法路由的消息。为了能够检出消息是否顺利投递到队列,我们需要相应的处理机制。今天就来验证一下相关的验证机制。
码农小胖哥
2020/10/10
2.8K0
RabbitMQ是如何确定消息是否投递到队列中的
PyQt5 字体/颜色/打印/打印预览对话框
本篇介绍PyQt5 的字体选择对话框,颜色选择对话框,打印预览对话框,和打印对话框。 QFontDialog.getFont() QColorDialog.getColor() QPrintPr
用户6021899
2019/08/13
4.1K0
如何确定恶意软件是否在自己的电脑中执行过?
很不幸,你在自己的电脑里发现了一个恶意的可执行程序!那么问题来了:这个文件到底有没有执行过? 在这篇文章中,我们会将注意力放在Windows操作系统的静态取证分析之上,并跟大家讨论一些能够帮助你回答上
FB客服
2018/03/01
1.4K0
如何确定恶意软件是否在自己的电脑中执行过?
准确判断一个 WPF 控件 / UI 元素当前是否显示在屏幕内
你的 WPF 窗口是可以拖到屏幕外面去的,所以拉几个元素到屏幕外很正常。你的屏幕可能有多个。你的多个屏幕可能有不同的 DPI。你检测的元素可能带有旋转。
walterlv
2023/10/22
7650
准确判断一个 WPF 控件 / UI 元素当前是否显示在屏幕内

相似问题

如何确定窗口是否处于屏幕外?

30

如何确定HTML元素是否在屏幕外?

20

Android会在屏幕上显示对话框。

30

如何确定Windows应用程序是否在屏幕外?

98

确定屏幕上是否显示iframe

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文