Событие Qt doubleClicked сгенерировано дважды - PullRequest
0 голосов
/ 04 июля 2018

У меня есть QTableView с QAbstractview только с одним столбцом. Я назначил событие двойного щелчка на 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())

Кто-нибудь знает проблему?

Большое спасибо и наилучшие пожелания

EDIT:

Я кое-что понял: когда я добавляю элементы вручную, это работает. Добавление его из 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 голосов
/ 05 июля 2018

Я нашел проблему. Я подключил функцию печати к функции, которую я вызываю несколько раз. Так он подключается несколько раз ...

Спасибо за вашу помощь, ребята.

...