|
发表于 2024-2-25 07:45:29
|
显示全部楼层
要禁用ALT+F4和右上角的X关闭,可以通过重写消息框的closeEvent()方法来实现。在该方法中,我们可以检测到关闭事件,并取消默认的关闭行为。
下面是修改后的代码示例:
- from PyQt5.QtWidgets import QMessageBox, QApplication
- from PyQt5.QtGui import QFont, QColor
- import sys
- class MyMessageBox(QMessageBox):
- def __init__(self):
- super().__init__()
- def closeEvent(self, event):
- # 拦截关闭事件
- event.ignore()
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- msg_box = MyMessageBox()
- # 设置标题的字体和颜色
- title_font = QFont('Arial', 12, QFont.Weight.Bold)
- title_color = QColor(255, 0, 0) # 红色
- msg_box.setWindowTitle('123')
- msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{ color: {title_color.name()}; }}")
- msg_box.setText(f'{msg_box.text()}')
- msg_box.setFont(title_font)
- # 设置文本的字体和颜色
- text_font = QFont('Arial', 10)
- text_color = QColor(0, 0, 255) # 蓝色
- msg_box.setText('234~~')
- msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{color: {text_color.name()};}}")
- msg_box.setText(f'{msg_box.text()}')
- msg_box.setFont(text_font)
- # 获取对应的按钮
- yes_button = msg_box.addButton('是', QMessageBox.ButtonRole.YesRole)
- no_button = msg_box.addButton('否', QMessageBox.ButtonRole.NoRole)
- # 设置按钮文本为中文
- yes_button.setText('是')
- no_button.setText('不是')
- # 显示消息框,并获取用户点击的按钮
- clicked_button = msg_box.exec()
- # 做出相应的操作
- if clicked_button == QMessageBox.StandardButton.Yes:
- print('用户点击了是按钮')
- else:
- print('用户点击了不是按钮')
- sys.exit()
- sys.exit(app.exec_())
复制代码
在这个示例中,我们创建了一个名为MyMessageBox的自定义消息框类,继承自QMessageBox。然后,重写了closeEvent()方法,在其中拦截关闭事件并忽略它。
请注意,在示例代码的最后,我们调用了sys.exit(app.exec_())来确保程序正常退出。
这样,ALT+F4和右上角的X关闭按钮将不再起作用。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|