Tôi đang sử dụng PySide để quản lý một số phần cứng và thực hiện một số thao tác tương đối đơn giản tùy thuộc vào (ví dụ) các lần nhấp nút trong giao diện. Mã để chạy từng phần cứng này nằm trong một chuỗi khác. Để thuận tiện, để tất cả những trình điều khiển phần cứng Tôi đã thêm một invoke_method
tín hiệu chung chung, như vậy mà một thành phần giao diện người dùng có thể sử dụngGọi phương thức an toàn và lười biếng trong PySide/PyQt
my_driver.invoke_method.emit('method_name', [arg, ...], {kwarg, ...})
Rõ ràng này truy cập vào thuộc tính tín hiệu ở chỗ chủ đề khác trực tiếp .... nhưng tôi m không chắc chắn nếu điều này là nhất thiết phải trong một thế giới GIL.
Nếu điều này thực sự là quá lười biếng một giải pháp - có bất kỳ lựa chọn thay thế tuyệt vời khác để gọi phương pháp tùy ý trong chủ đề tùy ý mà không cần phải có tín hiệu hoạt động cụ thể trong giao diện người dùng kết nối với tín hiệu khác trong trình điều khiển?
tôi có thể tưởng tượng thay vì sử dụng một tín hiệu trong mỗi bit mã UI rằng truy cập một mảnh khác nhau của phần cứng - một cái gì đó giống như do_invocation_driver_1
và do_invocation_driver_2
và kết nối những đến invoke_method
tín hiệu của trình điều khiển tương ứng.