gpt4 book ai didi

python - PyQt:事件未触发,我的代码有什么问题?

转载 作者:太空狗 更新时间:2023-10-30 01:56:16 26 4
gpt4 key购买 nike

我是 Python 新手,我正在尝试编写一个带有事件处理程序的简单应用程序,该事件处理程序会在单击自定义 QTreeWidget 中的项目时激活。由于某种原因,它不起作用。由于我才刚刚开始学习它,所以我无法弄清楚自己做错了什么。这是代码:

#!/usr/bin/env python

import sys

from PyQt4.QtCore import SIGNAL

from PyQt4.QtGui import QApplication
from PyQt4.QtGui import QMainWindow
from PyQt4.QtGui import QTreeWidget
from PyQt4.QtGui import QTreeWidgetItem

class MyTreeItem(QTreeWidgetItem):

def __init__(self, s, parent = None):

super(MyTreeItem, self).__init__(parent, [s])

class MyTree(QTreeWidget):

def __init__(self, parent = None):

super(MyTree, self).__init__(parent)
self.setMinimumWidth(200)
self.setMinimumHeight(200)
for s in ['foo', 'bar']:
MyTreeItem(s, self)
self.connect(self, SIGNAL('itemClicked(QTreeWidgetItem*, column)'), self.onClick)

def onClick(self, item, column):

print item

class MainWindow(QMainWindow):

def __init__(self, parent = None):

super(MainWindow, self).__init__(parent)
self.tree = MyTree(self)

def main():

app = QApplication(sys.argv)
win = MainWindow()
win.show()
app.exec_()

if __name__ == '__main__':
main()

我最初的目标是让 MyTree.onClick() 在我点击一个树项目时打印一些东西(并且可以访问这个处理程序中被点击的项目)。

最佳答案

你应该说

self.connect(self, SIGNAL('itemClicked(QTreeWidgetItem*, int)'), self.onClick)

请注意它在 SIGNAL 的第一个参数中说的是 int 而不是 column。您还只需为树小部件执行一次 connect 调用,而不是为树中的每个节点调用一次。

关于python - PyQt:事件未触发,我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119110/

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