PySide如何切换QTextBrows的可见性

2024-10-03 17:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过按一个按钮来显示/隐藏QTextBrowser小部件。有什么方法可以切换吗?现在我有两个按钮;一个用于显示textbrowser,另一个用于隐藏它。按钮也会根据textbrowser的可见性隐藏。这个实现如预期的那样工作,但是我认为应该/必须有一个更复杂的方法来实现它。有什么建议吗?你知道吗

def __init__(self, parent=None):
    super(Program, self).__init__(parent)
    ...code... 
    self.connect(self.showDetailsButton, SIGNAL("clicked()"), self.showTextBrowser)      
    self.textBrowser.hide() #hide the textbrowser by default
    self.resize(461, 200)
    self.connect(self.hideDetailsButton, SIGNAL("clicked()"), self.hideTextBrowser)
    self.hideDetailsButton.hide() #hide the hideDetailsButton by default
...code...

def showTextBrowser(self): 
    self.textBrowser.show()
    self.hideDetailsButton.show()
    self.showDetailsButton.hide()
    self.resize(461, 444)

def hideTextBrowser(self): 
    self.textBrowser.hide()
    self.showDetailsButton.show()
    self.hideDetailsButton.hide()
    self.resize(461, 200)
...code...

无论何时显示或隐藏QTextBrowser小部件,都会调整对话框的大小。你知道吗


Tags: 方法selfinit部件defshowcode按钮
2条回答

您只需要一个按钮和一个处理程序。单击按钮时更改按钮的文本,并使用浏览器的当前可见性在两种状态之间切换。你知道吗

下面是一个有效的演示:

from PySide import QtCore, QtGui

class Program(QtGui.QWidget):
    def __init__(self):
        super(Program, self).__init__()
        self.textBrowser = QtGui.QTextBrowser(self)
        self.button = QtGui.QPushButton('Hide', self)
        self.button.clicked.connect(self.toggleTextBrowser)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.textBrowser)
        layout.addWidget(self.button)

    def toggleTextBrowser(self):
        if self.textBrowser.isHidden():
            self.button.setText('Hide')
            self.textBrowser.show()
            self.resize(461, 444)
        else:
            self.button.setText('Show')
            self.textBrowser.hide()
            self.resize(461, 200)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Program()
    window.setGeometry(500, 300, 461, 444)
    window.show()
    sys.exit(app.exec_())

只需保存当前状态并使用它切换可见性:

def toggleVisibleTextBrowser(self): 
    isVisible= !isVisible # declared somewhere else
    self.textBrowser.setVisible(isVisible) 

    if isVisible:
        self.resize(461, 444)
    else
        self.resize(461, 200)
    ...

相关问题 更多 >