如何在QMainwindow中替换QWidget

时间:2019-02-21 01:25:16

标签: python user-interface pyqt5

我正在使用PyQt5开发GUI代码。 在我的代码中,我打算将一个QWidget替换为QMainWindow中的另一个QWidget。

这是我的代码。 我制作了QWidget,例如SMAP_home,SMAP_trimming和SMAP_assembly等。然后制作了QMainWindow,即SMAP_Window。

import sys 
import os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class SMAP_Window(QMainWindow):

    def __init__(self, *args):
        super(QMainWindow, self).__init__()

        if len(args) == 0:
            self.initUI()
        else:
            self.initUI(list(args))

    def initUI(self, *args):
        self.statusBar().showMessage('')
        self.toolbar = self.addToolBar('')

        newprojaction = QAction(QIcon('newfileicon.png'), 'New', self)
        loadprojaction = QAction(QIcon('loadfileicon.png'), 'Load', self)

        self.toolbar.addAction(newprojaction)
        self.toolbar.addAction(loadprojaction)

        self.setWindowIcon(QIcon('smapicon.png'))
        self.setWindowTitle('Shotgun Metagenomics Analysis Pipeline')
        self.setGeometry(300, 300, 500, 500)

        if args == (): 
            self.setCentralWidget(SMAP_Home())
        else:
            widget = args[0][0]
            value = args[0][1:]
            if widget == 'Trimming':
                self.setCentralWidget(SMAP_Trimming(value))
                self.close()
            elif widget == 'Assembly':
                self.setCentralWidget(SMAP_Assembly(value))
            elif widget == 'Bamming':
                self.setCentralWidget(SMAP_Alignment(value))
#           elif widget == 'Binning':
#               self.setCentral Widget(SMAP_Binning(value))

        self.show()

我想在许多基于SMAP_Window的QWidget之间进行更改。 但是,使用我的代码,尽管显示了带有更改的QWidget的新SMAP_Window,但常规(现有)SMAP_window(没有常规QWidget)并未被删除!

0 个答案:

没有答案