QCompleter不会在运行时使用PythonPyQT5中的SQLite数据库在QLineEdit中进行更新

2024-03-29 00:12:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我向数据库添加新项时,qcompleter不会显示该新项。 当我关闭程序并再次运行它时,该条目将显示在qcompleter中。QCompleter不会在运行时更新其值。 然而,可以在运行时在搜索函数中搜索新项

QCompleter在调试时生成其stringlist,而不是动态更新它

库存/库存经理文件中的QCompleter

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_输入函数

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()  

单击()将新项目添加到数据库

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列表 并且在运行时不会在数据库中添加任何新项 当程序退出并再次运行时,它将显示新项目


Tags: 文件函数textnameselfadd数据库stock