Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从一个主窗口向另一个主窗口发送自定义PyQT信号_Python_Pyqt_Pyqt5_Qt Signals - Fatal编程技术网

Python 从一个主窗口向另一个主窗口发送自定义PyQT信号

Python 从一个主窗口向另一个主窗口发送自定义PyQT信号,python,pyqt,pyqt5,qt-signals,Python,Pyqt,Pyqt5,Qt Signals,初学者python代码在这里。我在qt设计器中创建了两个主窗口。在第一个窗口中,我有一个包含三个项目和一个按钮(Button1)的组合框(cb),在另一个窗口中,我有一个LineEdit(编辑)。当我按下第一个窗口中的按钮时,我想在第二个主窗口中创建的LineEdit中显示文本(组合框中选择的当前项目) 我在网上列举了几个例子,但似乎找不到适合我的。所有示例都是通过在代码中构建窗口来完成的(与Qt Designer相反)。在Qt designer上设计windows的人似乎和我有同样的问题 如果

初学者python代码在这里。我在qt设计器中创建了两个主窗口。在第一个窗口中,我有一个包含三个项目和一个按钮(Button1)的组合框(cb),在另一个窗口中,我有一个LineEdit(编辑)。当我按下第一个窗口中的按钮时,我想在第二个主窗口中创建的LineEdit中显示文本(组合框中选择的当前项目)

我在网上列举了几个例子,但似乎找不到适合我的。所有示例都是通过在代码中构建窗口来完成的(与Qt Designer相反)。在Qt designer上设计windows的人似乎和我有同样的问题

如果有人能告诉我如何使用Qt designer中设计的窗口发送信号,我将不胜感激。这将真正解决我目前遇到的一个大瓶颈,并且我可以在代码的其他区域实现相同的策略

import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi


class First_Window(QMainWindow):

    got_signal = pyqtSignal(str)

    def __init__(self):
        super(First_Window,self).__init__()
        loadUi('first_window.ui',self)
        self.setWindowTitle('First Window')
        self.Button1.clicked.connect(self.On_buttonclick_clicked)

    def On_buttonclick_clicked(self):
        self.got_signal.emit(self.cb.currentText())

class Second_Window(QMainWindow):

    def __init__(self):
        super(Second_Window, self).__init__()
        loadUi('second_window.ui', self)
        self.setWindowTitle('Second Window')
        self.dcc = First_Window()
        self.dcc.got_signal.connect(self.show_it)

    def show_it(self, the_signal):
        self.edit.setText(the_signal)
        print(the_signal)


if __name__ == "__main__":

    app = QApplication(sys.argv)
    fw = First_Window()
    fw.show()
    sw = Second_Window()
    sw.show()

    sys.exit(app.exec_())
此代码是我正在处理的代码的简化版本,但它们有相同的问题。

说明: 主要问题是您已经创建了两个第一个\u窗口:

  • 一个你用来展示的,和
  • 另一个是在got_信号和show_信号之间建立连接
解决方案: 只需创建显示的第一个_窗口并建立连接:

导入系统 从PyQt5.QtCore导入pyqtSignal 从PyQt5.QtWidgets导入QApplication,QMainWindow 从PyQt5.uic导入loadUi 类第一个窗口(QMainWindow): got_信号=pyqtSignal(str) 定义初始化(自): super(第一个窗口,self)。\uuuuu init\uuuuu() loadUi(“first_window.ui”,self) self.setWindowTitle(“第一个窗口”) self.Button1.点击.连接(self.On_按钮点击) def On_按钮单击(自): self.got_signal.emit(self.cb.currentText()) 第二类窗口(QMainWindow): 定义初始化(自): super(第二个窗口,self)。\uuuuu init\uuuuu() loadUi(“第二个窗口”,self) self.setWindowTitle(“第二个窗口”) def显示它(自身、信号): self.edit.setText(_信号) 打印(_信号) 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) fw=第一个_窗口() fw.show() sw=第二个窗口() sw.show() fw.获得信号。连接(sw.显示) sys.exit(app.exec_()) 说明: 主要问题是您已经创建了两个第一个\u窗口:

  • 一个你用来展示的,和
  • 另一个是在got_信号和show_信号之间建立连接
解决方案: 只需创建显示的第一个_窗口并建立连接:

导入系统 从PyQt5.QtCore导入pyqtSignal 从PyQt5.QtWidgets导入QApplication,QMainWindow 从PyQt5.uic导入loadUi 类第一个窗口(QMainWindow): got_信号=pyqtSignal(str) 定义初始化(自): super(第一个窗口,self)。\uuuuu init\uuuuu() loadUi(“first_window.ui”,self) self.setWindowTitle(“第一个窗口”) self.Button1.点击.连接(self.On_按钮点击) def On_按钮单击(自): self.got_signal.emit(self.cb.currentText()) 第二类窗口(QMainWindow): 定义初始化(自): super(第二个窗口,self)。\uuuuu init\uuuuu() loadUi(“第二个窗口”,self) self.setWindowTitle(“第二个窗口”) def显示它(自身、信号): self.edit.setText(_信号) 打印(_信号) 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) fw=第一个_窗口() fw.show() sw=第二个窗口() sw.show() fw.获得信号。连接(sw.显示) sys.exit(app.exec_())
太棒了!工作起来很有魅力!我的逻辑还不存在,但我在代码中应用了相同的策略,看起来不错!非常感谢!极好的!工作起来很有魅力!我的逻辑还不存在,但我在代码中应用了相同的策略,看起来不错!非常感谢!