从单独的线程生成对话框

时间:2014-05-08 12:02:46

标签: python multithreading pyqt4

我几乎已经完成了将pyGTK应用程序转换为pyQT4的过程。 我正在努力解决的最后一个方面是从一个单独的线程生成一个对话框。

我有一个主GUI和一个后台线程。在线程特定问题的脱离,线程生成一个对话框。

对于pyGTK,我所做的是:

  def update_gui(function, *args, **kargs):
      '''DocString'''
      def idle_func():
          '''DocString'''
          Gdk.threads_enter()
          try:
            function(*args, **kargs)
          finally:
              Gdk.threads_leave()
      GObject.idle_add(idle_func)


  def gui_error(msg):
      '''Simple wrapper for a warning dialog'''
      md = Gtk.MessageDialog(parent=None, message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.CLOSE)
      md.set_markup(msg)
      md.run()
      md.destroy()

被称为:update_gui(gui_error,'help')

pyQT4中是否存在等效或我是否需要消除开始传递信号的内容?

1 个答案:

答案 0 :(得分:1)

  

我是否需要消除我开始传递信号的内容?

是的,你做到了。

你可以随时拥有自己的其他线索"以QObject为基础,并将QObject来自QApplication的基于子级的对象作为父级,并调用moveToThread()方法,但最好有{{1}}方法主线程处理GUI,其他线程向主线程发送信号以使其更新。

利用从GTK迁移到QT的机会,真正重新设计您的应用程序,实现软件主要组件之间的真正脱钩。