Qt doubleClicked事件发出两次

时间:2018-07-04 09:25:46

标签: python qt5 qtableview qabstractitemmodel pyside2

我有一个带有QAbstractview的QTableView,它只有一列。我将双击事件分配给QTableView,后者调用了一个打印所选值的函数。奇怪的是,当表中只有一条记录时,它可以正常工作。当有更多记录时,该函数总是被调用两次。

那是我的代码:

class ViewWindow(QWidget):

def __init__(self):
    super(ViewWindow, self).__init__()
    loader = QUiLoader()
    file = QFile(abspath("ui/view.ui"))
    file.open(QFile.ReadOnly)
    self.view_screen = loader.load(file, self)
    file.close()
    self.initUI()

def initUI(self):

    self.model = QStandardItemModel(parent=self)
    self.model.setColumnCount(1)
    self.model.setRowCount(len(d))
    for i in range(0, len(d)):
        self.model.setItem(i, 0, QStandardItem(str(d[i]['file'+str(i+1)])))

    self.view_screen.tbl_attachments.setModel(self.model)

    self.view_screen.tbl_attachments.setAlternatingRowColors(True)
    self.view_screen.tbl_attachments.verticalHeader().setVisible(False)
    self.view_screen.tbl_attachments.horizontalHeader().setVisible(False)
    self.view_screen.tbl_attachments.setSelectionMode(QAbstractItemView.SingleSelection)
    self.view_screen.tbl_attachments.setEditTriggers(QAbstractItemView.NoEditTriggers)
    self.view_screen.tbl_attachments.setShowGrid(False)
    self.view_screen.tbl_attachments.setFocusPolicy(Qt.NoFocus)
    self.view_screen.tbl_attachments.setColumnWidth(0, 680)
    self.view_screen.tbl_attachments.doubleClicked.connect(self.open_attachment)


def open_attachment(self):
        print (self.view_screen.tbl_attachments.currentIndex().data())

有人知道这个问题吗?

非常感谢和问候

编辑:

我想出了一些办法:当我手动添加元素时,它可以工作。从json添加它似乎是问题所在。这是我的方法:

    urllib.urlcleanup()
    f = urllib.urlopen("https://kose.kutschera.co.at/view_attachments_client.php?aussendung_id=22")
    s = f.read()
    f.close()
    d = json.loads(s)

    self.model = QStandardItemModel(parent=self)
    self.model.setColumnCount(1)
    self.model.setRowCount(len(d))
    for i in range(0, len(d)):
        attach = str(d[i]['file'+str(i+1)])
        self.model.setItem(i, 0, QStandardItem(attach))

有什么想法吗? -谢谢

1 个答案:

答案 0 :(得分:0)

我发现了问题。我在多次调用的函数中连接了打印函数。所以它连接了好几次...

感谢您的帮助。