Как отобразить диалог Hello World из приложения панели задач меню Python / Pyside2 для MacOS

Существующие объяснения на самом деле не полны без фактического правила из Стандарта, найденного в 6.7:

Нулевая инициализация всех переменных области блока со статической продолжительностью хранения или хранилищем потоков продолжительность выполняется до любой другой инициализации. Постоянная инициализация объекта области области с статической продолжительностью хранения, если это применимо, выполняется до того, как его блок будет введен первым. Реализации разрешено выполнять раннюю инициализацию других переменных области блока со статическими или потоками хранения потоков при тех же условиях, что реализации разрешено статически инициализировать переменную со статикой или длительностью хранения потоков в пространстве пространства имен. В противном случае такая переменная инициализируется, когда первый контроль проходит через его объявление; такая переменная считается инициализированной после завершения ее инициализации. Если инициализация завершается путем исключения исключения, инициализация не завершена, поэтому она будет снова проверена, когда следующий элемент управления войдет в объявление. Если элемент управления входит в объявление одновременно, а переменная инициализируется, одновременное выполнение должно ждать завершения инициализации. Если управление повторно вводит декларацию рекурсивно, когда переменная инициализируется, поведение не определено.

-1
задан eddy2k 16 January 2019 в 14:13
поделиться

1 ответ

Если я понял ваш вопрос, вы хотели открыть QDialog из строки меню QMainWindow, верно?

Для этого это простой подход:

import sys                                                                                      
from PySide2.QtCore import Slot                                                                    
from PySide2.QtWidgets import (QApplication, QMainWindow, QAction,                                 
QDialog, QLabel, QHBoxLayout)                                                                      

class Dialog(QDialog):                                                                          
    def __init__(self):                                                                         
        QDialog.__init__(self)                                                                  
        layout = QHBoxLayout()                                                                  
        layout.addWidget(QLabel("Hello World"))                                                 
        self.setLayout(layout)                                                                  

class MainWindow(QMainWindow):                                                                  
    def __init__(self):                                                                         
        QMainWindow.__init__(self)                                                              
        self.menu = self.menuBar()                                                              
        self.test_menu = self.menu.addMenu("Test")                                              

        self.hello_action = QAction("hello", self)                                              
        self.hello_action.triggered.connect(self.hello_dialog)                                  

        self.test_menu.addAction(self.hello_action)                                             

    @Slot()                                                                                     
    def hello_dialog(self, checked):                                                            
        dialog = Dialog()                                                                       
        dialog.exec_()                                                                          


if __name__ == "__main__":                                                                      
    app = QApplication()                                                                        
    window = MainWindow()                                                                       
    window.show()                                                                               
    sys.exit(app.exec_())
0
ответ дан cmaureir 16 January 2019 в 14:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: