qt界面如何同多个python程序相连接?

主要是开发一个界面,将界面代码同其他的py文件相互连接。
或者将界面代码里面的class中的被赋值的变量拿出来放到其他的py文件里。
界面的作用是在lineEdit里面输入,然后再输出。把lineEdit的值赋值给变量。但是在其他py文件里面无法从外部直接使用这个变量。
如:da=self.lineEdit.text(),在lineEdit框中输入内容会赋值给class中的da变量。但是在其他py文件却无法使用da变量。在其他py文件里无法将每次在lineEdit中的值赋值给da。在其他py文件里直接调用da变量失败

阅读 2.5k
1 个回答

用信号和槽:

# file: main.py
from PyQt5.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import pyqtSignal, pyqtSlot
import sys
import other_module

class MyWidget(QWidget):
    textChanged = pyqtSignal(str)

    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.line_edit = QLineEdit(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.line_edit)
        self.line_edit.textChanged.connect(self.on_textChanged)

    @pyqtSlot(str)
    def on_textChanged(self, text):
        self.textChanged.emit(text)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = MyWidget()
    widget.show()

    other = other_module.OtherClass()
    widget.textChanged.connect(other.on_textChanged)

    sys.exit(app.exec_())
# file: other_module.py
from PyQt5.QtCore import QObject, pyqtSlot

class OtherClass(QObject):
    @pyqtSlot(str)
    def on_textChanged(self, text):
        print(f"Text changed: {text}")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题