PyQt5打开新窗口(类),然后在新窗口上关闭主窗口更新

时间:2018-11-11 15:15:16

标签: python pyqt5

我已经在Main.py中创建了一个主窗口。然后,我创建了一个menuBar。在menuBar中,我创建了一个触发事件,将在pyqtSlot下打开一个子菜单。单击菜单中的“组合门”时,它将打开Combine_widget.py文件下的另一个类。

import combine_widget as cw
....
class MainWindow(QMainWindow):
...
mainMenu = self.menuBar()       # Load the menu bar from the QMainWindow
fileMenu = mainMenu.addMenu('File')
.....
combine_Menu = QMenu('Combine', self)
combine_doors = QAction('Combine Doors', self)    
combine_doors.triggered.connect(self.combine_subMenu)
combine_Menu.addAction(combine_doors)
.....
@pyqtSlot()
def combine_subMenu(self):
    try:
       self.combine = cw.App()                   
       self.combine.show()
       self.list_export_files()
......'

另一个文件Combine_widget.py具有App(Qwidget)类。它有几个组合框。选择文件后,将通过Submit_combine(self)运行一个单独的类(未显示)。
我需要了解什么: -我想打开第二个窗口,从组合框中选择文件,选择“提交”后,我要运行另一个类(未显示),然后关闭第二个窗口,主窗口能够根据以下内容更新文件第二个窗口关闭。在main.py中的combin_submenu(self)下的self.list_export_files()用于更新转到listWidget.addItem的文件。

我研究了closeevent(),并删除了其他示例,这些示例使用了打开,关闭和完成工作的方式,但是我看不到发出发出信号使主要工作完成的方法。

class App(QWidget):

    def __init__(self):
        super(App, self).__init__()
    ........

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)


    self.local_layout = QGridLayout()#QVBoxLayout()

    self.doors_label = QLabel()
    self.doors_label.setText("DOORS")
    self.doors_label.setAlignment(Qt.Qt.AlignLeft)

    # Doors Combo box
    self.doors_cb = QComboBox()

    self.doors_cb.addItems(self.onlyfiles)
    self.doors_cb.currentIndexChanged.connect(self.doors_selectionchange)

    self.left_label = QLabel()
    self.left_label.setText("Join Left File")
    self.left_label.setAlignment(Qt.Qt.AlignLeft)

    # Others Combo box
    self.other_cb = QComboBox()
    self.other_cb.addItems(self.onlyfiles)
    self.other_cb.currentIndexChanged.connect(self.other_selectionchange)

    self.start_label = QLabel()
    self.start_label.setText("Start the Conversion")
    self.start_label.setAlignment(Qt.Qt.AlignLeft)
    self.b = QPushButton("Submit")

    #b.setText("Show message!")
    self.b.move(200,50)
    self.b.setCheckable(True)
    self.b.clicked.connect(self.submit_combine)

    self.local_layout.addWidget(self.doors_label, 0,0)
    self.local_layout.addWidget(self.doors_cb, 0,1)
    self.local_layout.addWidget(self.left_label, 1,0)
    self.local_layout.addWidget(self.other_cb, 1,1)
    self.local_layout.addWidget(self.start_label, 2,0)
    self.local_layout.addWidget(self.b, 2,1)

    self.setLayout(self.local_layout)

    self.show()
   ..........
   @pyqtSlot()        
def submit_combine(self):

    try:
        self.doors = self.join_left_file
        self.right = self.right_file
        combiner.data(self.doors, self.right)      
        self.close()
    .....

'

0 个答案:

没有答案