pyQT中模态对话框与非模态对话框(解决一闪而过)的显示源码

时间:2022-10-16 23:02:07

1.   非模态对话框显示

      

      def func_button7(self):           

               myapp2 = MyForm2()         #   line  1
               myapp2.show()                   #   line  2


               qe = QEventLoop()             #   line  3
               qe.exec_()                            #   line  4
       

       其实上面的line 1 和line  2 两行代码即可显示一个非模态对话框(QDialog),,但是存在一个问题,即func_button7方法执行完成后,出了函数作用域myapp2就被销毁了,所以

        会出现窗体一闪而过的现象,line 3和line 4两行就能解决此现象,line 3实例化了一个 事件循环对象,line 4 可以起到阻塞的作用,即循环监听窗体事件,直到窗口关闭退

        出循环。



2.   模态对话框显示

       def func_button7(self):       

               myapp2 = MyForm2()         #   line  1
               myapp2.exec_()                  #   line  2


       模态对话框的显示比非模态对话框的显示要简单,就两行代码。