gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:06:34 24 4
gpt4 key购买 nike

我正在研究 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com