Qt 将QMessageBox移动到屏幕的右下角
我想将QMessageBox移动到屏幕的右下角,下面是我的代码,但并没有按预期工作,任何人都可以解释为什么?如何解决这里的问题Qt 将QMessageBox移动到屏幕的右下角,qt,pyqt,qt5,pyside,pyqt5,Qt,Pyqt,Qt5,Pyside,Pyqt5,我想将QMessageBox移动到屏幕的右下角,下面是我的代码,但并没有按预期工作,任何人都可以解释为什么?如何解决这里的问题 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * def moveToBottomRight(msgBox): msgBox.addButton("重计", QMessageBox.ActionRole) ms
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def moveToBottomRight(msgBox):
msgBox.addButton("重计", QMessageBox.ActionRole)
msgBox.addButton("停计", QMessageBox.ActionRole)
msgBox.addButton('继续', QMessageBox.ActionRole)
screenGeometry = QApplication.desktop().availableGeometry()
screenGeo = screenGeometry.bottomRight()
msgGeo = msgBox.frameGeometry()
msgGeo.moveBottomRight(screenGeo)
msgBox.move(msgGeo.topLeft())
def main():
app = QApplication(sys.argv)
msgBox = QMessageBox()
moveToBottomRight(msgBox)
msgBox.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
msgBox.frameGeometry()
未获取有效值,这是因为未显示消息框。您应该像这样使用sizeHint()
:
msgGeo = QRect(QPoint(0,0), msgBox.sizeHint())
sizeHint
保存小部件的建议大小。如果小部件有布局,它的默认实现将返回布局的首选大小。我认为在msgBox
之前,它的ti帧(大小)未定义,因此您使用的计算值无效。@MarekR似乎是对的,当将moveToBottomRight(msgBox)放在msgBox.show()之后时,它可以按照我的要求工作,但是msgBox先显示在起始位置,然后立即移动到目标位置,如何让它直接显示在目标位置而不首先显示在起始位置?@iMath如果调用msgBox.ensureProlished(),它是否工作正常代码>在你得到它的帧几何体之前?@MarekR在像这样更改代码之后,满怀期待地工作着codepad.org/KiifTwPB@thuga在像这样修改代码后,codepad.org/KiifTwPBI已经在Win7上测试了您的建议,事实是msgBox部分被任务栏隐藏,这不是我想要的。您是否尝试过screenGeometry()
而不是availableGeometry()
?当更改为screenGeometry()时,会隐藏更多区域,然后您可以使用类似screenGeometry=QApplication.desktop().availableGeometry()的内容。调整(0,0,-100)
来调整屏幕几何体的底部。您可以将100
值更改为适当的值。