python - 为什么 SLOT ('insertColumn()' ) 在 PyQt 绑定(bind)中失败?

标签 python qt qt4 pyqt pyqt4

我正在深入研究 PyQt,但遇到了一些烦恼。 SLOT('insertColumn()') 在附加到 GUI 中的按钮时不执行任何操作。 SLOT('clear()') 工作完美,insertColumn() 在绑定(bind)之外工作。 insertColumn() 在 Qt 文档中被列为公共(public)槽,所以我陷入困境。

代码如下:

class MainWindow(QMainWindow):
    def __init__(self, *args):
        QMainWindow.__init__(self, *args)

        # Table
        self.tableWidget = QTableWidget(6, columnCount, self);
        x = 0
        for x in range(0, columnCount):
            self.tableWidget.setColumnWidth(x, 30)
        for x in range(0, 6):
            self.tableWidget.setRowHeight(x, 24)

        # Window geometery and layout
        self.resize(800, 600)
        self.setWindowTitle('PyTab')
        self.setCentralWidget(self.tableWidget)

        # Menu and toolbar actions
        self.MenuExit = QAction(QIcon('exit.png'), 'Exit', self)
        self.MenuExit.setShortcut('Ctrl+Q')
        self.connect(self.MenuExit, SIGNAL('triggered()'), SLOT('close()'))

        self.MenuAddColumn = QAction(QIcon('clear.png'), 'Add Column', self)
        self.MenuAddColumn.setShortcut('Ctrl+N')

        #This line works:
        self.tableWidget.insertColumn(2)

        # I'm not sure why this line isn't working:
        self.connect(self.MenuAddColumn, SIGNAL('triggered()'), self.tableWidget, SLOT('insertColumn(2)'))

我尝试将 QTableWidget 定义为 tableWidgetself.tableWidget,但这并没有改变任何东西。

有人知道这是什么原因吗?


这是最终的代码:

def add_column(self):
    tableWidget.insertColumn(1)
self.MenuAddColumn.triggered.connect(add_column)

它使用新的 .connect() 语法,如 this SO question 中所述。 。再次感谢!

最佳答案

.connect()的调用仅设置信号和槽的关系。您实际上无法将值传递到 .connect() 调用中的槽。您可以创建自己的槽并将其放入对 .connect() 的调用中,然后在您自己的槽实现中调用 self.tableWidget.insertColumn(2)

编辑: 只是为了澄清......虽然插槽不能直接在调用 .connect() 中获取值,但它可以接收为信号定义的参数。

关于python - 为什么 SLOT ('insertColumn()' ) 在 PyQt 绑定(bind)中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819706/

相关文章:

c++ - 将 qwidget 上的当前项目保存为图像

qt - 如何使用 Qt 编写一个包装另一个库的共享库?

c++ - Qt 文件太大。

qt - 更改已禁用 QComboBox 的阴影颜色也会更改事件文本的颜色

c++ - Qt 中的 Q_PROPERTY?

c++ - 移动具有属性 Qt::CustomizeWindowHint 的 QT 窗体;

python - 如何将函数与 pandas 数据框一起使用

python - 我是否理解 Python 中实例属性和类属性之间的区别?

Python - Pandas - 如何使用第二个数据帧中的元素标记第一个数据帧中的元素?

从安装程序打开时 Python 程序会崩溃,但如果从 Spyder IDE 运行脚本则不会崩溃