Я хочу переместить QMessageBox в нижний правый угол экрана, следующий мой код, но не работает должным образом, кто-нибудь может объяснить почему? Как устранить проблему здесь?переместите 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' покажет, что его кадр (размер) ti не определен, поэтому вы используете недопустимое значение для вычислений. –
@MarekR кажется, что вы правы, когда вы устанавливаете moveToBottomRight (msgBox) после msgBox.show(), он работает так, как я хочу, но сначала показывает msgBox в исходной позиции, затем сразу же перемещается в позицию назначения, показывать в пункте назначения непосредственно без предварительного показа в исходной позиции? – iMath
@iMath работает, если вы вызываете 'msgBox.ensurePolished();' перед тем, как получить геометрию кадра? – thuga