我已经在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()
.....
'