我有一个GUI(用PyQt编写),有三个选项卡,每个都是aQtGui.QMainWindow班级。整个GUI由一个.ui文件定义。这似乎是SO(下一段中的链接)上类似问题之间的主要区别,人们希望隐藏QMainWindow对象。更具体地说,我试图隐藏QMainWindow对象,它是Gui元素的一部分(而不是整个)。在
主窗口及其选项卡如下所示:
根据配置文件中的设置,我想让测试保持可见,或者对用户隐藏它。我已经检查了PyQT Docs(即removeDockWidget()
?)有两个类似的SO查询(Link One和link Two),还有一个SO问题建议layouts/setVisible。。在
但我做不好。如果我使用.hide()
或.setVisible(False)
,那么似乎没有什么变化。如果我设置.setVisible(True)
,那么在启动时会出现一个额外的微型窗口,其中包含我的主类的名称。在
我的代码结构是:
我的入门/主修课:
class Gui:
def __init__(self):
# Create the main window GUI and show it
self.mainWindow= GuiMainWindow(self)
self.mainWindow.show()
<...>
def main():
app = QtGui.QApplication(sys.argv)
myGui = Gui(app)
sys.exit(app.exec_())
if __name__ == '__main__':
main()
guimain窗口包含三个选项卡:
^{pr2}$最后,TEST选项卡是我想要隐藏/显示的:
class GuiMainTestTab(QtGui.QMainWindow):
def __init__(self, appMain, mainWindow):
super(GuiMainTestTab, self).__init__()
self.appMain = appMain
self.mainWindow = mainWindow
self.ui = mainWindow.ui
<...>
def hideMe(self):
self.close()
# self.hide() # Also tried hide()
# self.setVisible(False) # ..Or setVisible()
---编辑以帮助回答/我的匹配注释将在下面回答---
因此,类GuiMainTestTab
通过其成员self.ui
访问ui文件的内容。在挖掘ui文件时,我发现testTab
是它在ui文件中测试选项卡的名称(与GuiMainWindow
中的testTab
相反!)。它附加到一个名为verticalTabWidget的QTabWidget。因此,要以编程方式查找测试选项卡的索引并将其删除,请执行以下操作:
testIdx = self.ui.verticalTabWidget.indexOf(self.ui.testTab)
self.ui.verticalTabWidget.removeTab(testIdx)
基于^{} 的操作,如} -容器,只会影响包含页面(tab)。
由于容器还使用
close()
、hide()
、setVisible(True)
不会影响你的^{show
、hide
和{a3}的其他访问函数,稍后将覆盖您的更改。在您可以通过在其他选项卡处于活动状态时调用
testTab.show()
来查看这一点。要对用户隐藏选项卡,您可以:
setupUi()
-函数)下面是使用第二种方法的最小工作示例:
只需使用^{} 和^{} 或^{} ,如果您需要“隐藏”选项卡中的内容,您甚至可以正常访问serverything。在
我在“tab2”上添加了一个QLineEdit,以显示删除时不会丢失任何数据,只需在其中键入内容并尝试。
相关问题 更多 >
编程相关推荐