QCompleter не обновляется во время выполнения в QLineEdit, с базой данных SQLite, в Python PyQT5 - PullRequest
0 голосов
/ 01 ноября 2019

Когда я добавляю новый элемент в базу данных, qcompleter не показывает этот новый элемент. Когда я закрываю программу и запускаю ее снова, эта запись отображается в qcompleter. QCompleter не обновляет свое значение во время выполнения. Принимая во внимание, что новый элемент можно искать в функции поиска во время выполнения.

QCompleter создает свой список строк при отладке и не обновляет его динамически

QCompleter в файле Stocks / Inventory Manager *

self.stock_name_add = QLineEdit()  
tuples=[]  
tuples= mp.completer_input()  
stockName=[tup[0] for tup in tuples]  
completer = QCompleter(stockName, self.stock_name_add)  
self.stock_name_add.setCompleter(completer)  
self.stock_name_add.show()  

Функция Completer_Input в файле манипуляции базой данных

def completer_input():  
    with conn:  
        result = []  
        c.execute("SELECT name FROM stock")          
        for row in c.fetchall():  
            result.append(row)  
    return result  

Функция обновления количества в файле управления базой данных

def update_quantity(name, val, date):  
    with conn:  
        c.execute("SELECT quantity FROM stock WHERE name = :name",{'name':name})  
        z = c.fetchone()  
        cost = z[0]+val  
        if cost < 0:  
            return  
        c.execute("""UPDATE stock SET quantity = :quantity WHERE name = :name""",{'name': name, 'quantity': cost})  
        conn.commit()  

on_click () для добавления нового элемента в базу данных

def on_click(self):  
    now = datetime.datetime.now()  
    stock_name_inp = self.stock_name.text().replace(' ','_').lower()  
    stock_count_inp = int(self.stock_count.text())  
    stock_cost_inp = int(self.stock_cost.text())  
    global stock_minCount_inp  
    stock_minCount_inp = int(self.stock_minCount.text())  
    stock_add_date_time = now.strftime("%Y-%m-%d %H:%M")  
    d = mp.insert_prod(stock_name_inp,stock_count_inp,stock_cost_inp,stock_minCount_inp,stock_add_date_time)  
    QtWidgets.QMessageBox.warning(self, 'Operation Successful', 'Stock name added to database')

qcompleter, показывающий только список qcompleter, скомпилированный во время отладки, а не какой-либоновый элемент, добавленный в базу данных во время выполнения, будет отображать новый элемент при выходе из программы и повторном запуске

...