pyqt5窗口操作


窗口显示最前

self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

子窗口阻塞父窗口(不关闭子窗口,则无法操作父窗口)

self.子窗口.setWindowModality(QtCore.Qt.ApplicationModal)

消息弹框

1、重写QMessageBox(调整按钮大小)

from PyQt5 import QtWidgets
class MyMessageBox(QtWidgets.QMessageBox):
    def __init__(self):
        super.__init__()
        self.setStyleSheet(
            "QPushButton {font: bold 72px;width: 300px;height: 160px;}")


def show_box(obj, title='', message='', btn_n=False):
    message_box = QtWidgets.QMessageBox(obj)
    message_box.setStyleSheet(
        "QPushButton {font: bold 42px;width: 200px;height: 80px;border-radius:40px;background-color: rgb(85, 170, 255);}")
    message_box.setWindowTitle(title)
    message_box.setText(message)
    if btn_n:
        message_box.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
        button_n = message_box.button(QtWidgets.QMessageBox.No)
        button_n.setText('取消')
    else:
        message_box.setStandardButtons(QtWidgets.QMessageBox.Yes)
    button_y = message_box.button(QtWidgets.QMessageBox.Yes)
    button_y.setText('确定')
    message_box.exec_()
    if message_box.clickedButton() == button_y:
        return True
    elif btn_n and message_box.clickedButton() == button_n:
        return False

eg.

reply = show_box(self, "提示", f"<font size='17' color='red'>确定关闭窗口么?</font>", btn_n=True)
if reply:
    sys.exit(app.exec_())