|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
事情大概是这样子的:
- import...
- class Mysignals(QObject):
- text_print = Signal(str)
- class Myui:
- def __init__(self):
- self.sg_main = Mysignals()
- self.sg_main.text_print.connect(self.print2ui)
- bt.clicked.connect(partial(self.f1))
- ...
- def print2ui(self,text):
- self.ui.Textlog.append(str(text))
- def f1(self):
- def lcf1():
- self.sg_main.text_print.emit('Start')
- b = B()
- b.f2()
- self.sg_main.text_print.emit('Finish')
- thread_1 = Thread(target=lcf1)
- thread_1.start()
- class B:
- def __init__(self):
- ...
- def f2(self):
- ...
- ...
复制代码
简单说明一下,子线程运行B类实例的方法f2,想要将该方法内部的一些运行状况更新到界面上,有办法实现吗?
有想了很多,都没有头绪。更新界面的方法在UI类中,一旦实例界面就初始化了。
求指点!!
打开UI后,下载验证码,加载到UI
- class DownloadYZMThread(QThread):
- get_yzm_url_signal = pyqtSignal(str)
- def run(self):
- url = APITool.download_yzm()
- #print("下载验证码")
- self.get_yzm_url_signal.emit(url)
- class LoginPan(QWidget,Ui_Form):
- "初始化方法"
- success_login = pyqtSignal(str) # 登陆界面接口
- def __init__(self,parent=None,*args,**kwargs):
- super().__init__(parent,*args,**kwargs)
- self.setupUi(self) #使LoginPan的实例对象,可以调用setupUi方法
- self.refresh_yzm() #初始化的时候刷新验证码
- def refresh_yzm(self):
- print("刷新代码")
- thread = DownloadYZMThread(self)
- def parse_yzm_url(url):
- url = APITool.download_yzm()
- pixmap = QPixmap(url)
- self.label.setPixmap(pixmap)
- self.label.clear_points() # 清除选中的标签
- thread.get_yzm_url_signal.connect(parse_yzm_url)
- thread.start() #开始下载验证码子线程
复制代码
|
|