我试图找出如何在我的Main类和QThread之间传递变量。这个想法是QThread能够改变并返回变量。具体来说,我想用smtplib会话来做这件事。我理解如何使用信号和插槽来更新QThread中的UI元素,但是如果只是给我改变的变量而不在标签或类似物中显示它?特别是因为变量不是简单的数据类型,如int或str。
我是python和pyqt的初学者,我对QMutex以及我正在阅读的其他内容感到非常困惑。我不反对自己进行研究,如果你能指出我的水平上的某个人能够理解的正确方向。
以下是一些代码,我认为这些代码显示了我要做的事情:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
import smtplib
import mainwindow
class Main(QMainWindow, mainwindow.Ui_MainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.setupUi(self)
self.start_smtp_button.clicked.connect(self.start_smtp)
def start_smtp(self):
smtp = self.smtp_lineEdit.text()
port = self.port_lineEdit.text()
self.a_thread = Thread(smtp, port)
self.a_thread.start()
def login(self):
# if I had access to the 's' from my thread, I could do other stuff with it, right?
class Thread(QThread):
def __init__(self, smtp, port, parent=None):
super(Thread, self).__init__(parent)
self.smtp = smtp
self.port = port
def run(self):
s = smtplib.SMTP(host=self.smtp, port=int(self.port))
def main():
app = QApplication(sys.argv)
form = Main()
form.show()
app.exec_()
if __name__ == '__main__':
main()
答案 0 :(得分:-1)
因此,专业开发人员朋友向我建议我应该将我的smtp会话作为全局变量。我读过一般不这样做,但考虑到这个建议的来源,我会继续这样做。感谢所有的帮助,我将继续监控这个问题是否有人有其他想法。