Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将事件侦听器添加到PyQt4中的动态QTableWidgetItem?_Python_Qt_Event Handling_Pyqt4_Qtablewidget - Fatal编程技术网

Python 如何将事件侦听器添加到PyQt4中的动态QTableWidgetItem?

Python 如何将事件侦听器添加到PyQt4中的动态QTableWidgetItem?,python,qt,event-handling,pyqt4,qtablewidget,Python,Qt,Event Handling,Pyqt4,Qtablewidget,我是Python和Qt新手 我正在开发一个GUI程序,该程序在开始时使用QTableWidget显示数据列表 使用setItem()方法将行插入表中。它们是QTableWidgetItem对象 现在我想允许用户单击选择某一行(QTableWidgetItem),我的程序将填充一个辅助的QTableWidget 我知道有一种东西叫做信号和插槽。我要用这个吗? 也有使用installEventFilter()的示例,但是它不适合QTableWidgetItemQt没有“事件侦听器”。正如您所提到的,

我是Python和Qt新手

我正在开发一个GUI程序,该程序在开始时使用
QTableWidget
显示数据列表

使用
setItem()
方法将行插入表中。它们是
QTableWidgetItem
对象

现在我想允许用户单击选择某一行(QTableWidgetItem),我的程序将填充一个辅助的
QTableWidget

我知道有一种东西叫做信号和插槽。我要用这个吗? 也有使用
installEventFilter()
的示例,但是它不适合
QTableWidgetItem

Qt没有“事件侦听器”。正如您所提到的,您可以通过向插槽发送信号来执行这些操作

例如:

QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)
这将导致在单击myTableWidget时调用方法
self.foobar()
。foobar函数可以基于此检索并填充第二个小部件

请注意,在
connect
的最后一个参数中,您不使用括号(
foobar()
),只使用方法名称

Qt没有“事件侦听器”。正如您所提到的,您可以通过向插槽发送信号来执行这些操作

例如:

QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)
这将导致在单击myTableWidget时调用方法
self.foobar()
。foobar函数可以基于此检索并填充第二个小部件


请注意,在
connect
的最后一个参数中,您不使用括号(
foobar()
),只使用方法名称

最简单的方法就是使用QTableWidget的
itemClicked
-信号:

def handle_item_clicked(tableItem):
    #the callback, called when an item is clicked, with the item as an argument
    #populate the secondary table in some way

#register the callback with the QTableWidget
yourTableWidget.itemClicked.connect(handle_item_clicked)

您还可以使用
currentItemChanged
信号,该信号为您提供当前和以前的选择(例如,如果用户取消选择项目,您可以清除或隐藏辅助小部件,在这种情况下,当前项目将为无).

最简单的方法就是使用QTableWidget的
itemClicked
-信号:

def handle_item_clicked(tableItem):
    #the callback, called when an item is clicked, with the item as an argument
    #populate the secondary table in some way

#register the callback with the QTableWidget
yourTableWidget.itemClicked.connect(handle_item_clicked)

您还可以使用
currentItemChanged
信号,该信号为您提供当前和以前的选择(例如,如果用户取消选择某个项目,您可以清除或隐藏辅助小部件,在这种情况下,当前项目将为无)。

您为什么使用这种古老的连接机制?@BlaXpirit:需要详细说明吗?古语在什么意义上???@Kuba:我想他认为l4mpi答案中使用的语法更好/更新。我不知道我自己,我一直在PyQt4中使用这个,它对我来说非常适合。你为什么使用这种古老的连接机制?@BlaXpirit:想详细说明一下吗?古语在什么意义上???@Kuba:我想他认为l4mpi答案中使用的语法更好/更新。我不知道我自己,我一直在PyQt4中使用它,它对我来说非常适合。