如何防止TextArea被删除?

时间:2012-04-04 18:30:48

标签: python qt pyqt

我在模态对话框窗口(QDialog的子类)中有一个QPlainTextEdit。每当我最小化对话框并将其恢复时,QTextArea中的所有文本都会消失。

如何在QPlainTextEdit小部件中保留文本?

我已经尝试将文本保存在textedit小部件中,如下所示:

def __init__(self):
    self.text_area = self.QPlainTextEdit()
    self.previous_text = ''

def hideEvent(self, event):
    self.previous_text = self.text_area.toPlainText()

def showEvent(self, event):
    self.text_area.setPlainText(self.previous_text)

但这种方法没有产生任何可观的结果。

修改 我注意到这只发生在我实际上可以隐藏模态对话框时...这似乎只有当我使用Xmonad作为我的窗口管理器时......每当我在GNOME或Windows上尝试这个时,这种行为都不可能因为那些窗口管理器实际上阻止了模态对话框的最小化。

修改 按照下面@ Avaris的评论,我尝试为模态QDialog启用最小化,如下所示:

def __init__(self):
    ...
    self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)

设置此标志后,可以在Windows,GNOME和XMonad上复制消失的文本行为。

在我最小化窗口之前,这是我的Windows机器的可视示例: Before I minimize the window

这是我再次抬起窗户后的样子: After I minimize the window

修改 文本被写入模态对话框的QPlainTextEdit,如下所示:

def write(self, text):
    self.text_area.insertPlainText(QtCore.QString(text))

文本本身作为python字符串从线程系统中检索,其标准输出已被捕获并重定向。到达上面的write()函数时,文本本身只是一个python字符串。

修改 当我像这样修改上面提到的write方法时(遵循@ ekhumoro的建议):

def write(self, text):
    self.text_area.insertPlainText(text)

隐藏并显示对话框后,文本仍然缺失。

0 个答案:

没有答案