pyqt5 - 不能与 QComboBox 关联
问题描述
Main 类的按钮不与 Signals 的 Qcombobox 类连接
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtWidgets import *
import sys
from PyQt5 import QtGui
class Signals(QWidget):
asignal = pyqtSignal(str)
def __init__(self):
super(Signals, self).__init__()
self.setGeometry(300, 250, 400, 300)
self.ii()
self.show()
def ii(self):
vbox = QVBoxLayout()
self.combo = QComboBox()
self.combo.addItem("Python")
self.combo.addItem("Java")
self.combo.addItem("C++")
self.combo.addItem("C#")
self.combo.addItem("Ruby")
self.buttom = QPushButton("Click")
self.buttom.clicked.connect(self.windown2)
vbox.addWidget(self.combo)
vbox.addWidget(self.buttom)
self.setLayout(vbox)
def do_something(self):
self.asignal.emit(self.combo.currentText())
def windown2(self):
self.ggpp = Main()
self.ggpp.show()
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
self.setGeometry(500,150, 600, 300)
vbox1 = QVBoxLayout()
self.buttom1 = QPushButton("Click")
self.buttom1.clicked.connect(self.coso1)
vbox1.addWidget(self.buttom1)
self.setLayout(vbox1)
def coso1(self):
s = Signals()
s.asignal.connect(lambda sig: print("self.combo.currentText()>>>>>" + sig))
s.do_something()
if __name__ == '__main__':
app = QApplication(sys.argv)
nals = Signals()
nals.show()
sys.exit(app.exec())
解决方案
您看到的情况是因为您没有使用 的现有实例Signals
,但每次单击按钮时都会创建一个新实例。
在您的情况下,您可以在创建新窗口时添加对实例的引用作为参数,以便您可以正确连接到它的信号。
class Signals(QWidget):
# ...
def windown2(self):
self.ggpp = Main(self)
self.ggpp.show()
class Main(QWidget):
def __init__(self, signals):
super(Main, self).__init__()
self.signals = signals
self.signals.asignal.connect(self.coso1)
self.setGeometry(500,150, 600, 300)
vbox1 = QVBoxLayout()
self.buttom1 = QPushButton("Click")
self.buttom1.clicked.connect(self.signals.do_something)
vbox1.addWidget(self.buttom1)
self.setLayout(vbox1)
def coso1(self, sig):
print("self.combo.currentText()>>>>>" + sig)
推荐阅读
- angular - 通过单击按钮 angular 4 屏蔽和取消屏蔽输入字段值
- wxpython - wxpython双面板窗口显示信息
- java - Java Gson .add 函数不采用字符串参数(maven 项目)
- python - pyImporterror 从父文件夹运行子文件夹 python 脚本
- kubernetes - DeploymentConfig 上的 Openshift Origin 1.5.1 Pod 反关联性不起作用
- sql - 如何获取指定为年和季度的两个日期之间的差异
- react-native - React-navigation,如何从 navigatorRef 获取路线
- javascript - jsPDF 输出所有唯一的屏幕截图,而不是打印整个内容
- java - OkHttp MockWebServer 无法接受 android P (API 28) Instrumentation Test 中的连接
- teradata-sql-assistant - teradata 助手中的 SQL 插入语句