启动时带有 QTablewidget 信号的 rowCount
rowCount with signal of QTablewidget at startup
有两个 classes,第一个 class Table
与 QTableWidget 具有在启动时调用信号的功能,带有自定义信号和槽以计算行数。
自定义信号用于发出行数并将行数转换为另一个 class。
第一部分按预期工作。似乎插槽从不在另一个 class 中发出或调用函数。
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:
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)
我哪里做错了?
问题是信号在建立连接之前发出。
一种可能的解决方案是使用 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):
# ...
有两个 classes,第一个 class Table
与 QTableWidget 具有在启动时调用信号的功能,带有自定义信号和槽以计算行数。
自定义信号用于发出行数并将行数转换为另一个 class。
第一部分按预期工作。似乎插槽从不在另一个 class 中发出或调用函数。
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:
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)
我哪里做错了?
问题是信号在建立连接之前发出。
一种可能的解决方案是使用 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):
# ...