【问题标题】:PySide how to toggle visibility of QTextBrowserPySide 如何切换 QTextBrowser 的可见性
【发布时间】:2015-11-26 12:49:23
【问题描述】:

我想通过按一个按钮来显示/隐藏 QTextBrowser 小部件。有没有办法切换它?现在我有两个按钮;一个用于显示文本浏览器,另一个用于隐藏它。根据文本浏览器的可见性,按钮也会被隐藏。此实现按预期工作,但我认为应该/必须有一种更复杂的方式来实现它。有什么建议么?

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 小部件时都会调整对话框的大小。

【问题讨论】:

    标签: python qt pyside


    【解决方案1】:

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

    这是一个工作演示:

    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_())
    

    【讨论】:

    • 这就像一个魅力 - 我不知道 .isHidden() -方法。尽管我仍然想知道显然没有一种通用的 .toggle() 方法适用于所有小部件。谢谢!
    【解决方案2】:

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

    def toggleVisibleTextBrowser(self): 
        isVisible= !isVisible # declared somewhere else
        self.textBrowser.setVisible(isVisible) 
    
        if isVisible:
            self.resize(461, 444)
        else
            self.resize(461, 200)
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2020-04-10
      • 2013-08-05
      • 2014-12-20
      • 1970-01-01
      相关资源
      最近更新 更多