有两个类,一类是带有Table的QTableWidget类,一个函数在启动时用自定义信号调用信号,另一个是插槽来计数行数。
自定义信号用于发出行数并将其转换为另一个类。
第一部分正在按预期工作。似乎时隙从不在另一个类中发出或调用函数。
class Table(QtWidgets.QWidget):
rowCount = QtCore.pyqtSignal(int)
def __init__(self, parent=None):
super(Table, self).__init__(parent)
self.tableWidget = QtWidgets.QTableWidget(0, 4)
self.countrow()
def countrow(self):
count = self.tableWidget.rowCount()
self.rowCount.emit(count)另一个类:
class Anotherwidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super( Anotherwidget, self).__init__()
self.table = Table()
self.table.rowCount.connect(self.addrow)
@QtCore.pyqtSlot(int)
def addrow(self, count):
print(count)我在这里做错了什么?
发布于 2019-09-05 15:49:25
问题是信号是在连接之前发出的。
一个可能的解决方案是使用QTimer.singleShot(0, ...)
class Table(QtWidgets.QWidget):
rowCount = QtCore.pyqtSignal(int)
def __init__(self, parent=None):
super(Table, self).__init__(parent)
self.tableWidget = QtWidgets.QTableWidget(0, 4)
QtCore.QTimer.singleShot(0, self.countrow)
def countrow(self):
# ...另一种可能的选择是在连接之后调用countrow:
class Table(QtWidgets.QWidget):
rowCount = QtCore.pyqtSignal(int)
def __init__(self, parent=None):
super(Table, self).__init__(parent)
self.tableWidget = QtWidgets.QTableWidget(0, 4)
def countrow(self):
# ...class Anotherwidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super( Anotherwidget, self).__init__()
self.table = Table()
self.table.rowCount.connect(self.addrow)
self.table.countrow()
def addrow(self):
# ...https://stackoverflow.com/questions/57805274
复制相似问题