Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在PyQt向导中显示页面后连接信号。?_Python_Pyqt_Pyqt4_Qwizard - Fatal编程技术网

Python 如何在PyQt向导中显示页面后连接信号。?

Python 如何在PyQt向导中显示页面后连接信号。?,python,pyqt,pyqt4,qwizard,Python,Pyqt,Pyqt4,Qwizard,我已经使用Qt设计器在PyQt4中创建了一个向导。在向导的一个页面上,存在类型为QTextBrowser的“text\u Browser”对象。我正在使用函数QTextBrowser.append()根据一些处理向其中添加文本 我希望在显示本页后执行追加功能,而不是将操作(信号)连接到下一页或上一页上的任何其他按钮。如何执行此操作?您可以在QTextBrowser中重新实现showEvent # from PySide import QtGui from PyQt4 import QtGui

我已经使用
Qt设计器
在PyQt4中创建了一个向导。在向导的一个页面上,存在类型为
QTextBrowser
的“text\u Browser”对象。我正在使用函数
QTextBrowser.append()
根据一些处理向其中添加文本


我希望在显示本页后执行追加功能,而不是将操作(信号)连接到下一页或上一页上的任何其他按钮。如何执行此操作?

您可以在QTextBrowser中重新实现
showEvent

# from PySide import QtGui
from PyQt4 import QtGui

class CustomTextBrowser(QtGui.QTextBrowser):
    '''Reimplment show event to append text'''

    def showEvent(self, event):
        # do stuff here 
        #self.append('This random text string ')
        event.accept()
请注意,每次显示小部件时,这将附加到QTextBrowser的字符串,这意味着切换此小部件可见性的其他Qt事件可能会导致意外行为。出于这个原因,最好使用信号和插槽,但由于您明确地使用信号/插槽,因此
showEvent
上有一个QEvent版本,带有一个合理的警告

避免多次追加文本的一个解决方案是设置实例变量,并在显示小部件后切换该值:

# from PySide import QtGui
from PyQt4 import QtGui

class CustomTextBrowser(QtGui.QTextBrowser):
    '''Reimplment show event to append text'''

    def __init__(self, *args, **kwds):
        super(CustomTextBrowser, self).__init__(*args, **kwds)

        self._loaded = False

    def showEvent(self, event):
        if not self._loaded:
            # do stuff here 
            #self.append('This random text string ')
            self._loaded = True
        event.accept() 
另一个解决方案是使用上面提到的signal/slot策略,或者重写
\uuuu init\uuuu
在子类中自动附加文本。对于Qt程序员来说,信号/插槽机制可能是最直观、最合乎逻辑的