第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在函數(shù)內(nèi)部“打印”pyqt5?

如何在函數(shù)內(nèi)部“打印”pyqt5?

牧羊人nacy 2023-08-22 10:47:11
我正在創(chuàng)建一個程序(用于網(wǎng)頁抓?。?,我想創(chuàng)建一個地方來顯示腳本正在做什么(因?yàn)樗呀?jīng)可以通過控制臺上的打印來實(shí)現(xiàn)),但在 PyQt5 textEdit 中。(該腳本位于 python 文件的函數(shù)內(nèi)部)然而,當(dāng)函數(shù)/腳本運(yùn)行時(shí),GUI 崩潰并且直到函數(shù)/腳本結(jié)束才顯示任何內(nèi)容。我做了一個簡化版本來幫助理解問題并使其更容易解決。如果它適用于這個,那么它可能也適用于另一個。Python文件print('iniciando programa...')from PyQt5 import uic, QtWidgetsimport timedef F_exemplof(): #function thats print index in 2 seconds    for a in range(20):        print('Print index: ' + str(a))        W_exemplogui.textEdit.append('Print index: ' + str(a))        time.sleep(2)# Importing the GUIapp = QtWidgets.QApplication([])W_exemplogui = uic.loadUi('testegui.ui')# ButtonsW_exemplogui.pushButton.clicked.connect(F_exemplof)#W_exemplogui.pushButton_2.clicked.connect()# Show windowW_exemplogui.show()app.exec()測試GUI.ui<?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow">  <property name="geometry">   <rect>    <x>0</x>    <y>0</y>    <width>383</width>    <height>304</height>   </rect>  </property>  <property name="windowTitle">   <string>MainWindow</string>  </property>  <widget class="QWidget" name="centralwidget">   <layout class="QGridLayout" name="gridLayout" rowstretch="0">    <item row="0" column="0">     <widget class="QFrame" name="frame">      <property name="styleSheet">       <string notr="true">background-color: rgb(90, 90, 90);</string>      </property>      <property name="frameShape">       <enum>QFrame::StyledPanel</enum>      </property>      <property name="frameShadow">       <enum>QFrame::Raised</enum>      </property>      <layout class="QGridLayout" name="gridLayout_2">       <item row="1" column="1">        <widget class="QPushButton" name="pushButton">         <property name="styleSheet">          <string notr="true">color: rgb(255, 255, 255);</string>         </property>         <property name="text">          <string>Iniciar</string>         </property>
查看完整描述

1 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個贊

耗時(shí)的任務(wù)必須在輔助線程中執(zhí)行,以避免阻塞 GUI,并且必須使用信號將信息發(fā)送到主線程。


import threading

import time


from PyQt5 import uic, QtCore, QtWidgets



class Task(QtCore.QObject):

    messageChanged = QtCore.pyqtSignal(str)


    def start(self):

        threading.Thread(target=self._execute, daemon=True).start()


    def _execute(self):

        for a in range(20):

            print("Print index: " + str(a))

            self.messageChanged.emit("Print index: " + str(a))

            time.sleep(2)



def main():

    app = QtWidgets.QApplication([])

    W_exemplogui = uic.loadUi("testegui.ui")

    task = Task()

    W_exemplogui.pushButton.clicked.connect(task.start)

    task.messageChanged.connect(W_exemplogui.textEdit.append)

    W_exemplogui.show()

    app.exec_()



if __name__ == "__main__":

    main()


查看完整回答
反對 回復(fù) 2023-08-22
  • 1 回答
  • 0 關(guān)注
  • 4013 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號