鱼C论坛

 找回密码
 立即注册
查看: 1714|回复: 3

MessageBox问题

[复制链接]
发表于 2024-2-25 07:45:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        有如下代码:

# 创建一个消息框
        msg_box = QMessageBox()

        ###
        # 设置标题的字体和颜色
        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'<span style="color:{title_color.name()}">{msg_box.text()}</span>')
        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'<span style="color:{text_color.name()}">{msg_box.text()}</span>')
        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()


请问如何禁用ALT+ F4和右上角的X关闭?

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-2-25 07:45:29 | 显示全部楼层
要禁用ALT+F4和右上角的X关闭,可以通过重写消息框的closeEvent()方法来实现。在该方法中,我们可以检测到关闭事件,并取消默认的关闭行为。

下面是修改后的代码示例:

  1. from PyQt5.QtWidgets import QMessageBox, QApplication
  2. from PyQt5.QtGui import QFont, QColor
  3. import sys

  4. class MyMessageBox(QMessageBox):
  5.     def __init__(self):
  6.         super().__init__()

  7.     def closeEvent(self, event):
  8.         # 拦截关闭事件
  9.         event.ignore()

  10. if __name__ == '__main__':
  11.     app = QApplication(sys.argv)

  12.     msg_box = MyMessageBox()

  13.     # 设置标题的字体和颜色
  14.     title_font = QFont('Arial', 12, QFont.Weight.Bold)
  15.     title_color = QColor(255, 0, 0)  # 红色
  16.     msg_box.setWindowTitle('123')
  17.     msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{ color: {title_color.name()}; }}")
  18.     msg_box.setText(f'{msg_box.text()}')
  19.     msg_box.setFont(title_font)

  20.     # 设置文本的字体和颜色
  21.     text_font = QFont('Arial', 10)
  22.     text_color = QColor(0, 0, 255)  # 蓝色
  23.     msg_box.setText('234~~')
  24.     msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{color: {text_color.name()};}}")
  25.     msg_box.setText(f'{msg_box.text()}')
  26.     msg_box.setFont(text_font)

  27.     # 获取对应的按钮
  28.     yes_button = msg_box.addButton('是', QMessageBox.ButtonRole.YesRole)
  29.     no_button = msg_box.addButton('否', QMessageBox.ButtonRole.NoRole)

  30.     # 设置按钮文本为中文
  31.     yes_button.setText('是')
  32.     no_button.setText('不是')

  33.     # 显示消息框,并获取用户点击的按钮
  34.     clicked_button = msg_box.exec()

  35.     # 做出相应的操作
  36.     if clicked_button == QMessageBox.StandardButton.Yes:
  37.         print('用户点击了是按钮')
  38.     else:
  39.         print('用户点击了不是按钮')
  40.         sys.exit()

  41.     sys.exit(app.exec_())
复制代码


在这个示例中,我们创建了一个名为MyMessageBox的自定义消息框类,继承自QMessageBox。然后,重写了closeEvent()方法,在其中拦截关闭事件并忽略它。

请注意,在示例代码的最后,我们调用了sys.exit(app.exec_())来确保程序正常退出。

这样,ALT+F4和右上角的X关闭按钮将不再起作用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-25 07:47:19 | 显示全部楼层
FishC 发表于 2024-2-25 07:45
要禁用ALT+F4和右上角的X关闭,可以通过重写消息框的closeEvent()方法来实现。在该方法中,我们可以检测到 ...

我是pyQT6  

回复请注意python格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-25 07:47:36 | 显示全部楼层
清風 发表于 2024-02-25 07:47
我是pyQT6  

回复请注意python格式


非常抱歉,以下是使用PyQt6重写的示例代码:

  1. from PyQt6.QtWidgets import QMessageBox, QApplication
  2. from PyQt6.QtGui import QFont, QColor
  3. import sys

  4. class MyMessageBox(QMessageBox):
  5.     def __init__(self):
  6.         super().__init__()

  7.     def closeEvent(self, event):
  8.         # 拦截关闭事件
  9.         event.ignore()

  10. if __name__ == '__main__':
  11.     app = QApplication(sys.argv)
  12.     msg_box = MyMessageBox()
  13.    
  14.     # 设置标题的字体和颜色
  15.     title_font = QFont('Arial', 12, QFont.Weight.Bold)
  16.     title_color = QColor(255, 0, 0)  # 红色
  17.     msg_box.setWindowTitle('123')
  18.     msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{ color: {title_color.name()}; }}")
  19.     msg_box.setText(f'{msg_box.text()}')
  20.     msg_box.setFont(title_font)

  21.     # 设置文本的字体和颜色
  22.     text_font = QFont('Arial', 10)
  23.     text_color = QColor(0, 0, 255)  # 蓝色
  24.     msg_box.setText('234~~')
  25.     msg_box.setStyleSheet(f"QLabel#qt_msgbox_label{{color: {text_color.name()};}}")
  26.     msg_box.setText(f'{msg_box.text()}')
  27.     msg_box.setFont(text_font)

  28.     # 获取对应的按钮
  29.     yes_button = msg_box.addButton('是', QMessageBox.ButtonRole.YesRole)
  30.     no_button = msg_box.addButton('否', QMessageBox.ButtonRole.NoRole)

  31.     # 设置按钮文本为中文
  32.     yes_button.setText('是')
  33.     no_button.setText('不是')

  34.     # 显示消息框,并获取用户点击的按钮
  35.     clicked_button = msg_box.exec()

  36.     # 做出相应的操作
  37.     if clicked_button == QMessageBox.StandardButton.Yes:
  38.         print('用户点击了是按钮')
  39.     else:
  40.         print('用户点击了不是按钮')
  41.         sys.exit()
  42.    
  43.     sys.exit(app.exec())
复制代码


请注意,在示例代码的最后,我们使用`sys.exit(app.exec())`来确保程序正常退出。这样,ALT+F4和右上角的X关闭按钮将不再起作用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表