Qcompleter currentCompletion не работает

Недавно я работал над демонстрацией завершения кода. Я хочу создать ассоциацию всплывающей подсказки с элементами в popup(). Во всплывающей подсказке отображается некоторая информация, запрашиваемая элементом, с которым он связан, когда пользователи выбирают один элемент во всплывающем списке. Я попробовал currentCompletion(), чтобы получить содержимое элемента, но он вернул первое завершение только один раз. Как это исправить?

Вот мое приложение

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


def get_data(model):
# Searching through the Doc
# Result shows in a dictionary structure
    result = {"alpha": 0, "apple": 1, "agree": 2}
    icon_address = ['..\..\Src\Img\A.png', '..\..\Src\Img\E.png','..\..\Src\Img\O.png']
    for cmd, value in result.items():
        item = QStandardItem(cmd)
        item.setIcon(QIcon(icon_address[value]))
        model.insertRow(0, item)


class CodeAC:

   def __init__(self, input_line):
      self.completer = QCompleter()
      input_line.setCompleter(self.completer)
      self.model = QStandardItemModel()

   def active_script(self):
      get_data(self.model)
      self.completer.setModel(self.model)

   def tip_balloon(self):
      key = self.completer.currentRow()
      print(key)

Вот мой основной:

from Src.Extention.src.code_ac import *
import sys
import ctypes

class MainWindow(QWidget):

    def __init__(self):
        super(MainWindow, self).__init__()
        self.extention = None
        self.entry = QLineEdit(self)

    def init_main(self):
        self.setGeometry(600,600,800,600)
        self.setWindowTitle('VISA Communication')
        self.setWindowIcon(QIcon('..\..\Src\Img\icon.png'))
        self.show()

    def active_extention(self):
        self.extention = CodeAC(self.entry)
        self.extention.active_script()

if __name__ == '__main__':

   app = QApplication(sys.argv)
   root = MainWindow()
   root.init_main()
   root.active_extention()
   sys.exit(app.exec_())

Печать дает только 0, даже я выбираю второе завершение. Вот снимок экрана


person pounch_doggie    schedule 20.02.2017    source источник
comment
Я вызвал self.extention.tip_ballon() в функции active_script.   -  person pounch_doggie    schedule 20.02.2017


Ответы (1)


Вы должны использовать activated сигнал QCompleter и изменить tip_balloon:

[...]
   self.completer.setModel(self.model)
   self.completer.activated.connect(self.tip_balloon)

def tip_balloon(self, text):
   print(text)
person eyllanesc    schedule 20.02.2017
comment
Оно работает! Это действительно полезно. Спасибо, @eyllanesc. Кстати, есть ли учебник по PyQt для начинающих? Мне очень больно читать документацию. - person pounch_doggie; 21.02.2017
comment
Как разработчик, вы должны научиться читать документацию, удачи: P - person eyllanesc; 21.02.2017