我想做一个可复用的table类,用来展示不同的表内容和标题,写了一个函数来创建表实例,但这样创建出来的表信号槽无效,不能触发槽函数。代码如下,请问各位大佬能帮我看看是什么问题吗?有什么需要我继续补充的吗?
from PyQt5.QtWidgets import QApplication
from PyQt5 import uic
class Table:
def __init__(self, title):
self.ui = uic.loadUi("./table.ui")
self.ui.setWindowTitle(title)
self.ui.tableWidget.setRowCount(5)
self.ui.tableWidget.setColumnCount(7
self.ui.tableWidget.cellChanged.connect(self.change
def change(self, row, column):
print('(%(r)s, %(c)s)' % {'r': row, 'c': column
def create_table(title, *, ui):
table = Table(title)
ui.mdiArea.addSubWindow(table.ui)
table.ui.show(
if __name__ == '__main__':
app = QApplication([])
mdiArea_ui = uic.loadUi('./mdiArea.ui')
mdiArea_ui.show()
# 创建一个表标题为 '111'
table = Table('111')
mdiArea_ui.mdiArea.addSubWindow(table.ui)
table.ui.show()
# 使用函数创建一个表标题为'create_table'
create_table('create_table', ui=mdiArea_ui
app.exec_()
界面上改变111表单元格内容时,可以触发change函数,但是改变create_table表单元格内容时,无法触发change函数。
from PyQt5.QtWidgets import QApplication
from PyQt5 import uic
class Table:
def __init__(self, title):
self.ui = uic.loadUi("./table.ui")
self.ui.setWindowTitle(title)
self.ui.tableWidget.setRowCount(5)
self.ui.tableWidget.setColumnCount(7
self.ui.tableWidget.cellChanged.connect(self.change
def change(self, row, column):
print('(%(r)s, %(c)s)' % {'r': row, 'c': column
def create_table(title, *, ui):
table = Table(title)
ui.mdiArea.addSubWindow(table.ui)
table.ui.show(
if __name__ == '__main__':
app = QApplication([])
mdiArea_ui = uic.loadUi('./mdiArea.ui')
mdiArea_ui.show()
# 创建一个表标题为 '111'
table = Table('111')
mdiArea_ui.mdiArea.addSubWindow(table.ui)
table.ui.show()
# 使用函数创建一个表标题为'create_table'
create_table('create_table', ui=mdiArea_ui
app.exec_()
界面上改变111表单元格内容时,可以触发change函数,但是改变create_table表单元格内容时,无法触发change函数。