我有一个带有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))
有什么想法吗? -谢谢
答案 0 :(得分:0)
我发现了问题。我在多次调用的函数中连接了打印函数。所以它连接了好几次...
感谢您的帮助。