我想将QMessageBox移动到屏幕的右下角,以下是我的代码,但没有按预期工作,任何人都可以解释为什么?如何解决这里的问题?
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
保存小组件的建议大小。如果小部件具有布局,则其默认实现将返回布局的首选大小。