- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试找出一种方法来获取一个简单的 QMainWindow 来显示一个空的 QWidget 并报告用于命令行的实际屏幕大小。什么有效(修改过的 ZetCode PyQt5 教程内容):
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QWidget, QSizePolicy, QVBoxLayout
from PyQt5.QtCore import QPoint
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setCentralWidget(QWidget(self))
exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close)
self.statusBar()
#menubar = self.menuBar()
#fileMenu = menubar.addMenu('&File')
#fileMenu.addAction(exitAction)
#toolbar = self.addToolBar('Exit')
#toolbar.addAction(exitAction)
self.setGeometry(700, 100, 300, 700)
self.setWindowTitle('Main window')
self.show()
#TL -> topLeft
TL = QPoint(self.centralWidget().geometry().x(), self.centralWidget().geometry().y())
print("TL_Relative",TL)
print("TL_Absolute:",self.mapToGlobal(TL))
#BR -> bottomRight
BR = QPoint(self.centralWidget().geometry().width(), self.centralWidget().geometry().height())
print("BR_Relative",BR)
print("BR_Absolute:",self.mapToGlobal(BR))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
结果是:
TL_Relative PyQt5.QtCore.QPoint()
TL_Absolute: PyQt5.QtCore.QPoint(700, 100)
BR_Relative PyQt5.QtCore.QPoint(300, 678)
BR_Absolute: PyQt5.QtCore.QPoint(1000, 778)
但是,当我取消注释所有注释掉的 initUI 条目时,我得到:
TL_Relative PyQt5.QtCore.QPoint(0, 65)
TL_Absolute: PyQt5.QtCore.QPoint(700, 165)
BR_Relative PyQt5.QtCore.QPoint(300, 613)
BR_Absolute: PyQt5.QtCore.QPoint(1000, 713)
上面的值还可以,但是BR_Relative
对我来说没有意义。在屏幕顶部添加内容会删除底部的高度?
我还尝试了很多其他方法。 geometry()
、rect()
及其 topLeft()
和 bottomRight()
...它们都显示(几乎)相同的结果。
我哪里错了?
如果它很重要:我正在运行带有 Python 3.4/PyQT5 的 Raspbian 支持的 RPi2。使用此脚本的原因是拥有一个框架,可以在启动 OMXplayer 时将 OMXplayer 保存在“内部”,将获得的坐标移交给其 --win
参数。启动后,OMXplayer 应该覆盖空的centralWidget。但一旦我添加菜单或工具栏,OMXplayer 窗口就不再适合了。只有状态栏有效。
最佳答案
一图胜千言。来自 QMainWindow文档:
因此,由于窗口几何形状保持不变,菜单栏和工具栏必须占用中央小部件的空间。中央小部件的原始高度为 678;减去65
,得到613
。
要获取正确的值,请尝试:
geometry = self.centralWidget().geometry()
print("TL_Relative", geometry.topLeft())
print("TL_Absolute:", self.mapToGlobal(geometry.topLeft()))
print("BR_Relative", geometry.bottomRight())
print("BR_Absolute:", self.mapToGlobal(geometry.bottomRight()))
关于python - centralWidget 大小似乎错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488351/
我正在尝试找出一种方法来获取一个简单的 QMainWindow 来显示一个空的 QWidget 并报告用于命令行的实际屏幕大小。什么有效(修改过的 ZetCode PyQt5 教程内容): #!/us
我尝试构建一个简单的 GUI 应用程序。然后我收到了这些警告: QLayout: Attempting to add QLayout "" to MainWindow "", which alread
我有一个 QMainWindow,其中央小部件已设置为查看黑色场景的 QGraphicsView(用于测试目的)。请注意,在下面的代码中,我使用了派生自 QGraphicsView 的类,称为 CQt
我对 Qt 有点陌生,所以决定稍微尝试一下,以便有一天我可以用 GUI 制作一些程序。我一直在玩 Windows 并遇到了一个问题。除了 QMainWindow 之外,我还创建了两个新的 QWidge
这个问题在这里已经有了答案: QWidget does not draw background color (1 个回答) 关闭 8 年前。 我有一个 Qt Designer 构建的 GUI 我正在
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是 PySide 的新手。我有一个主窗口对象,它一次显示一个小部件。我一直在尝试更改 QMainWindow 类的中央小部件,以便在按下按钮时替换窗口中的可见小部件。问题是按下的按钮在 Widget
我是 Qt 新手。我在多个网站上搜索了我的问题,但找不到答案。如何向 centralWidget 添加图像? 我试过: MainWindow w; w.centralWidget()->setStyl
我有一个带有 QMainWindow 的应用程序,理想情况下应该有一个以 QGLWidget 为中心的应用程序,在外面留有空间用于工具栏和其他顶部/侧面小部件。 不幸的是,无论 QGLWidget 设
我已经编码了 QWidget MyWidget我想添加两个 MyWidget与 QVBoxLayout在 MainWindow类(与我们打开 Qt Creator 时默认提供的 MainWindow
我正在尝试学习和构建一个小型扫雷器图形用户界面应用程序。 这是它的样子: 我想做的下一件事是单击一个按钮后,按钮将设置为 hide() 并且 QLabel 将出现在同一个位置。 我的代码是这样的: .
考虑以下示例代码: from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QWidget,
我只是想进入 QT(和 KDE)程序,但在尝试向 .ui 文件(基于 QWidget) 嵌入到我的 KDE 4 程序中。 这一切都来自 KDevelop 4 提供的基本模板,所以虽然我了解发生了什么,
我是一名优秀的程序员,十分优秀!