- 主题:求pyqt电子书
不是。。建议用 PyQt 的话,凡是 Python 有的,都用 Python 的。
Qt 的东西少用。做个界面就好了。其它的别让 Qt 参与。
【 在 codelover 的大作中提到: 】
: 弱弱的问一句,使用qt以后,多线程、网络、数据库等,都必须使用qt的模块,不能用python原生得了
: - 来自 水木社区APP v3.5.3
: 最近在写pyqt
: ...................
--
FROM 120.37.189.*
你试下:
for i in range(100):
t = QThread()
t.start()
del t
很容易就把你的 Python 程序给崩溃掉。
【 在 hothail 的大作中提到: 】
: 可以阿,不耽误
: 至少我用到 requests,pymysql
: 线程我用QThread
: ...................
--
FROM 120.37.189.*
可以用共享变量和加锁的。Python 和 Qt 的线程都是对应系统的线程,只是系统线程 API 的包装。
还有个办法是使用 QMetaObject::invokeMethod(),从子线程调用 UI 线程的方法。要求有事件循环。比如这样写:
QMetaObject.invokeMethod(
DeferCallThread.mainThreadStub, # 一个 QObject 对象
"_slot_callback", # 它的一个方法名
Qt.QueuedConnection, # 固定取值
Q_ARG("PyQt_PyObject", self.done), # 参数1,必须是 PyQt_PyObject
Q_ARG("PyQt_PyObject", result), # 参数2, 必须是 PyQt_PyObject
)
打个广告吧,大多数 PyQt 使用线程是为了访问网络,这种情况下,可以看看我弄的 PyQt 协程。没有开线程,而是在 eventlet 协程里面访问网络,得到数据可直接更新 GUI 不卡 UI 无需加锁很方便:
https://github.com/hgoldfish/eventlet-pyqt
【 在 codelover 的大作中提到: 】
: 再请教一个:其他线程和qt线程之间通信,是不是只能用pyqtSignal,不能用共享变量和加锁机制那一套
: --来自微微水木3.5.12
--
FROM 112.47.122.*
这种情况一般是因为 Qt 的内存管理和 Python 的不兼容,导致行为难以预料。
所以我才会建议说少用 Qt 的那些线程、网络组件,只用 Qt 部分做个界面。
【 在 codelover 的大作中提到: 】
: 试着写了个入门程序,pyqt+udp socket通信,网络通信线程启动后,qt界面无缘无故退出,是qt的bug吗?
: --来自微微水木3.5.12
--
FROM 112.47.122.*
是的。循环跑的话,那个 t 变量的内容会不断的被创建,再被删除。
QThread 是不能直接删除的,不然大概率崩溃。而 Python threading 库没有这个问题。
【 在 laserwin355 的大作中提到: 】
: QThread这么玩肯定出问题,这个坑我也踩过。虽然没有后边那条del t 语句,也一样有问题。
: 发自「今日水木 on NOH-AL10」
--
FROM 112.47.122.*
没这回事。
我们 C/S 架构的软件,和服务器之间的通讯也是普通的 HTTPS,而服务器则是普通的 django 工程。
【 在 cyberdyne 的大作中提到: 】
: 搭车求问,用c/s结构比b/s结构是不是更安全一点
--
FROM 125.78.66.*
本来也不一定会崩啊。只是说 Qt 部分崩溃的可能性比较大。
【 在 zhouusongnir 的大作中提到: 】
: 不懂就问,我用的pyside2,多线程,多进程,网络都在用,不会出现崩溃的问题,是因为是pyside而不是pyqt的原因吗?
: 我遇到最大的问题了是在线程里刷进度条会崩溃,改成信号量刷就解决了
--
FROM 125.78.66.*