【问题标题】:How to do something in QtWidgets.QDialog close event如何在 QtWidgets.QDialog 关闭事件中做某事
【发布时间】:2021-03-18 12:45:33
【问题描述】:

我正在使用self.sub_dialog = QtWidgets.QDialog(self) 我想在 sub_dialog 关闭事件时清除 QLineEdite。怎么办?

【问题讨论】:

  • 这取决于,因为“关闭” QDialog 有不同的方式:当用户通过按下 Ok 或 Cancel 等按钮或按下 Esc 键或尝试关闭来接受/拒绝对话框时通过单击窗口的 X 按钮。你在寻找什么行为?
  • QtWidgets.QDialog继承并覆盖closeEvent
  • @musicamante 通过单击窗口的 X 按钮,没有接受/拒绝。

标签: python pyqt5 qdialog


【解决方案1】:

我想你想要这个

from PyQt5.QtWidgets import *

class main(QWidget):
    def __init__(self):
        super().__init__()

        self.line_main = QLineEdit("Line", self)

        self.resize(800,500)
        self.show()

        self.dialog = QDialog(self)
        self.line = QLineEdit("Line", self.dialog)
        self.dialog.resize(400,300)
        self.dialog.closeEvent = self.line_clear
        self.dialog.exec_()

        self.resize(800,500)
        self.show()

    def line_clear(self, event):
        if self.line.text() != "":
            self.line_main.clear()
            self.line.clear()
            print("Success")


app = QApplication([])
window = main()
app.exec()

【讨论】:

  • 此时正在清除 QLineEdit 文本但不关闭子窗口。而且我的主窗口也有主事件。
  • 我的意思是,要关闭子窗口,需要按两次 x 按钮。我们可以修复一次吗?
  • 我改了试试
  • 或者你可以删除这一行 ==》 if self.line.text() != "":
猜你喜欢
  • 1970-01-01
  • 2016-10-15
  • 2015-10-11
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多