下面是我的应用程序代码,它允许您在窗口之间切换。该菜单有两个编程选项,例如“详细报告”和“所有公司”,现在加载布局后,我不知道如何将按钮放在这两个视图中,以允许您将视图从“详细报告”更改为“全部”公司,反之亦然。你能帮助我吗 :) ?
class App(QMainWindow):
def __init__(self):
super().__init__()
self.dashboardView = DashboardWindow()
self.detailView = RaportWindow()
self.infoView = InfoWindow()
self.init_ui()
self.show()
def init_ui(self):
main_menu = self.menuBar()
dashboard = main_menu.addMenu('Dashboard')
dashboard.addAction(QAction('Detail Raport', self))
dashboard.addAction(QAction('All companies', self))
dashboard.triggered.connect(self.change_view)
self.setWindowTitle(self.title)
self.show()
def change_view(self, q):
if q.text() == 'Detail Raport':
self.detailView.detailRaport(self)
self.show()
if q.text() == 'All companies':
self.dashboardView.setupUIdashboard(self)
self.show()
class RaportWindow(object):
def detailRaport(self, MainWindow):
self.centralwidget = QWidget(MainWindow)
grid = QGridLayout()
...
self.centralwidget.setLayout(grid)
MainWindow.setCentralWidget(self.centralwidget)
class DashboardWindow(object):
def setupUIdashboard(self, MainWindow):
self.centralwidget = QWidget(MainWindow)
grid = QGridLayout()
.....
self.centralwidget.setLayout(grid)
scrollArea = QScrollArea()
scrollArea.setWidgetResizable(True)
scrollArea.setWidget(self.centralwidget)
MainWindow.setCentralWidget(scrollArea)
首先,DashboardWindow 和 RaportWindow 不是小部件,它们是填充您可能使用 Qt Designer 创建的小部件的类,您必须做的是创建一个继承自小部件的类并使用以前的类来填充它。
进入正题,你必须使用QStackedWidget
能够交换小部件。
class App(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
self.show()
def init_ui(self):
main_menu = self.menuBar()
dashboard = main_menu.addMenu('Dashboard')
dashboard.addAction(QAction('Detail Raport', self))
dashboard.addAction(QAction('All companies', self))
dashboard.triggered.connect(self.change_view)
self.dashboardView = Dashboard()
self.detailView = Raport()
self.stacked = QStackedWidget()
self.setCentralWidget(self.stacked)
self.stacked.addWidget(self.detailView)
self.stacked.addWidget(self.dashboardView)
def change_view(self, q):
if q.text() == 'Detail Raport':
self.stacked.setCurrentWidget(self.detailView)
elif q.text() == 'All companies':
self.stacked.setCurrentWidget(self.dashboardView)
class RaportWindow(object):
def detailRaport(self, MainWindow):
...
class DashboardWindow(object):
def setupUIdashboard(self, MainWindow):
...
class Dashboard(QMainWindow, DashboardWindow):
def __init__(self, parent=None):
super(Dashboard, self).__init__(parent)
self.setupUIdashboard(self)
class Raport(QMainWindow, RaportWindow):
def __init__(self, parent=None):
super(Raport, self).__init__(parent)
self.detailRaport(self)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = App()
w.show()
sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)