当前位置: 首页 > 后端技术 > Python

解决PySide6崩溃-闪退(自定义信号)

时间:2023-03-26 15:12:40 Python

闂鎻忚堪鎴戞湁涓€涓埇铏」鐩紝鍙娇鐢≒ySide6鍋欸UI锛屽皝瑁匰elenium锛岀埇铏繘搴︿細鎵撳嵃鍦℅UI涓婏紝濡備笅鍥俱€備絾鏄綋Selenium鍑洪敊锛屾垜鐐瑰嚮閲嶆柊寮€濮嬬殑鏃跺€欙紝鍙戠幇PySide6宕╂簝浜嗭紒閿欒淇℃伅濡備笅锛歅rocessfinishedwithexitcode139(interruptedbysignal11:SIGSEGV)problemresearch.缃戜笂鏌ヤ簡璧勬枡锛屽彂鐜拌繖鏄洜涓轰綘鍦ㄨ/鍐欎竴涓墦寮€鐨勬枃浠躲€傚湪杩欑鎯呭喌涓嬶紝鍙渶鍏抽棴鏂囦欢骞堕噸鏂拌繍琛岃剼鏈嵆鍙В鍐虫鍦ㄨ鍙?鍐欏叆姝e湪鎵撳紑鐨勬枃浠剁殑闂銆傝В鍐虫柟娉曟槸鍏抽棴宸茬粡鎵撳紑鐨勬枃浠讹紝鐒跺悗閲嶆柊鎵ц鑴氭湰銆備絾闂鏄鍏抽棴鍝釜鏂囦欢銆傪煒傝嚜瀹氫箟淇″彿娣卞叆鍒嗘瀽鎴戠殑绋嬪簭鍙戠幇鎴戠殑鑷畾涔変俊鍙峰啓寰椾笉濂姐€備负浠€涔堥渶瑕佽嚜瀹氫箟淇″彿锛熷綋鎴戜滑闇€瑕佹洿鏂癠I鏃讹紝鏃笉鑳界洿鎺ュ湪涓荤嚎绋嬩笂鎿嶄綔锛堜細闃诲UI锛夛紝涔熶笉鑳界洿鎺ュ湪瀛愮嚎绋嬩笂鎿嶄綔锛堜細鏈夋剰鎯充笉鍒扮殑bug锛屾瘮濡傛垜鐨刢rash锛夈€傚綋鎴戜滑闇€瑕佸UI杩涜鎿嶄綔鏃讹紝鎴戜滑闇€瑕佸彂閫佽嚜瀹氫箟淇″彿銆備富绾跨▼鏀跺埌淇″彿鍚庯紝浼氬湪鍚堥€傜殑鏃堕棿灏藉揩鏇存柊UI銆傞鍏堣嚜瀹氫箟淇″彿浠g爜濡備笅classMySignal(QObject):#瀹氫箟淇″彿()defbind_signal(self):#灏嗚嚜瀹氫箟Signal缁戝畾鍒扮壒瀹氬嚱鏁帮紝浣嗗彂閫佹椂鍑洪敊my_signal.update_log.connect(self.update_log)defupdate_log(self,log_info):self.ui.log_box.appendPlainText(log_info)defstart_buy(self):#ControlBuy鏄竴涓猄elenium鎺т欢绫伙紝杩欓噷浼犲叆浜唘pdatelog鍑芥暟#浣嗘槸update_log鐩存帴鏇存柊浜哢I锛屾墍浠ユ姤閿欎簡#搴旇鏄痚mitupdatelogcontrol_buy鐨勪俊鍙?ControlBuy(self.update_log)thread=Thread(target=control_buy.start)thread.start()姝g‘浠g爜#emit鏇存柊鏃ュ織鐨勪俊鍙凤紝Selenium鐩存帴璋冪敤emit淇″彿鐨勫嚱鏁?鑰屼笉鏄洿鎺ヨ皟鐢╱pdate_logdefsend_log_signal(log_info):my_signal.update_log.emit(log_info)#PySideUIclassMainWindow(QMainWindow):def__init__(self):self.bind_signal()defbind_signal(self):my_signal.update_log.connect(self.update_log)defupdate_log(self,log_info):self.ui.log_box.appendPlainText(log_info)defstart_buy(self):#鍙戦€佺粰Selenium鎺т欢绫荤殑鏄痵end_log_signal鑰屼笉鏄痵elf.update_log!!!control_buy=ControlBuy(send_log_signal)thread=Thread(target=control_buy.start)thread.start()鍥炲繂涓€涓嬶紝瀛愮嚎绋嬬洿鎺ユ洿鏂癠I锛屽彲鑳戒細瀵艰嚧澶氫釜绾跨▼鍚屾椂鎿嶄綔Pyside缁勪欢锛屼粠鑰屽鑷寸▼搴忓潬姣併€傝В鍐虫柟妗堟槸浣跨敤鑷畾涔変俊鍙锋潵鏇存柊UI銆傝嚜瀹氫箟淇″彿鐨勫叧閿槸锛氬皢鑷畾涔変俊鍙疯繛鎺ュ埌鏌愪釜鍑芥暟锛堝叾涓洿鏂颁簡UI锛夛紝鍦ㄩ渶瑕佹洿鏂癠I鐨勫湴鏂癸紝鍙戝嚭鑷畾涔変俊鍙凤紙鍚屾椂浼犻€掑繀瑕佺殑鍙傛暟锛?缁戝畾鐗瑰畾鍑芥暟鐨勮嚜瀹氫箟淇″彿m鈥嬧€媦_signal.update_log.connect(self.update_log)#鍙戝嚭鑷畾涔変俊鍙穖鈥嬧€媦_signal.update_log.emit(log_info)