跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一下各位,用 pyqt5 写的 GUI 模块引用业务模块,业务模块如何反过来影响 GUI 模块?
未分類
24 10 月 2020

请教一下各位,用 pyqt5 写的 GUI 模块引用业务模块,业务模块如何反过来影响 GUI 模块?

请教一下各位,用 pyqt5 写的 GUI 模块引用业务模块,业务模块如何反过来影响 GUI 模块?

資深大佬 : chiyeung524 8

具体问题如下

我的需求:弄一个界面,用户通过界面操作,生成并启动一个线程,线程运行具体业务内容。

现有三个模块,分别是 业务模块 yw.py 、线程模块 thread.py 、界面模块 gui.py 常规的设计思路是界面模块 import 线程模块、线程模块 import 业务模块

现在遇到的问题是:我想在 GUi 界面加一个 textBrowser,用于显示业务模块运行时输出的内容(类似将控制台输出搬到 GUI 上),但是业务模块不能 import GUI 模块( python 禁止相互 import ),请问该怎么弄?

现有的不成熟思路: 1.逐层传递 GUi 实例:gui 模块调用 thread 模块时,将 gui 的实例传给 thread,thread 再传给业务模块,从而实现在业务模块操作 GUi (但是感觉有点麻烦) 2.自定义信号和槽:在 gui 模块定义槽,在业务模块里发送信号(但不知道跨模块发送信号可行性,好像也需要先传 gui 的实例吧?)

大佬有話說 (8)

  • 資深大佬 : iqxd

    用信号槽应该不难实现吧,在 yw.py 和 thread.py 新建类,继承自 QObject, 并在其中定义 signal emit 内容,在 gui.py 新建实例化 yw,thread 对象,并定义 slot 函数显示内容就行了吧

  • 資深大佬 : lpts007

    “python 禁止相互 import”

    import 位置往后放放就行了

  • 資深大佬 : lpts007

    pyqt 问题 csdn 绰绰有余,都不用 google 出手

  • 資深大佬 : megachweng

    你可以让 logging.hander 继承 QObject handler 的 emit 方法发射 qtsignal 具体实现可以参考我之前的一个 SO 回答 https://stackoverflow.com/a/55059907/6725213

  • 資深大佬 : imn1

    thread.py
    class SearchDbThread(QtCore.QThread):
    … outputText = QtCore.pyqtSignal(object)
    … ……
    … res = yw.search(param)
    … self.outputText.emit(res) # 发送结果

    gui.py
    self.searchThread = thread.SearchDbThread(param)
    self.searchThread.outputText.connect(self.handleSearchResult) # 接收结果

    def handleSearchResult(self, res):
    这里控制界面的变化

    举例
    pgbarValue = QtCore.pyqtSignal(int)
    …
    self.pgbarValue.emit(percent)
    这个是控制进度条的,emit 发送不需要等函数结束,在 thread 中的循环内也能发送

  • 資深大佬 : imn1

    另一个思路
    yw 里面有个 class A 不方便改,改动会影响其他业务
    可以在 thread 里面继承过来,class B(yw.A),这样在 thread 里面调用 B,并传参给 B 就可以了

  • 主 資深大佬 : chiyeung524

    @lpts007 厉害,果然是脚本语言,疏忽了

  • 主 資深大佬 : chiyeung524

    @iqxd 明白了,谢谢啦

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具