我试图构建一个类似于ubuntu软件中心的GUI。我用的是pyqt。我在GUI中创建了三个QFrame对象。每个QFrame对象都有不同的用途,一个用于分类,一个用于顶级软件,一个用于推荐软件。这三个框架显示在主GUI屏幕上。在搜索关键字之后,我只想在屏幕上显示一个包含结果的帧。因此,当我点击一个按钮时,我需要删除这三个帧。我没有找到任何关于删除框架的信息。在
我在网上找到的只是从布局中删除小部件。我已经知道并在我的一个框架中实现了这一点。在这个框架中,当我点击一个按钮时,我会从框架中移除一些小部件,等等。我的代码如下: r self.topRatedAppsFrame=QtGui.Q框架(自我中心Widget) ... 在
self.horFortopRatedApps = QtGui.QWidget(self.topRatedAppsFrame)
...
self.topRatedAppsList = QtGui.QGridLayout(self.horFortopRatedApps)
...
self.app1 = QtGui.QPushButton(self.horFortopRatedApps)
self.topRatedAppsList.addWidget(self.app1,0,0)
#########this deletes only widget app1 from topRatedAppsList#########
#########but frame still exists and appears in the screen.i #########
######### want to destroy or delete frame topRatedAppsFrame #########
self.topRatedAppsList.removeWidget(self.app1)
self.app1.deleteLater()
self.app1 = None
####################################################################
提示:我想实现的是在Ubuntu软件中心实现的。Ubuntu软件中心有很多框架。但是当我们搜索某个东西时,一切都消失了,只显示搜索结果。我想做同样的事。我下载了Ubuntu软件中心并检查了源代码代码。因为它太复杂了,而且使用了gtk,这个源代码对我没有帮助。我该怎么做?如有任何指导或想法,我们将不胜感激。在
删除或删除其他帧可能是错误的方法。在
只需根据需要隐藏/显示帧会更有效。有几种方法可以实现这一点,但是QStackedLayout听起来最适合你的蛹。您需要做的就是将每组框架作为一个单独的层/页添加到堆栈中,然后使用setCurrentIndex将所需的项放到顶部。堆叠布局就像一个选项卡小部件,但是没有选项卡栏和外部框架。在
编辑:
下面是一个简单的工作演示,演示如何使用堆叠布局:
QFrame是QWidget类的子类。删除QWidget已经在问题中解释过了。因此,可以以类似的方式删除QFrame。在
使用QStackLayout并不能解决这个问题。因为,窗口中必须同时有多个活动帧。然而,使用QStackLayout,一次只能激活一个QFrame(QWidget),这不适合这种情况。在
相关问题 更多 >
编程相关推荐