MyO*_*ues 2 python pyqt qcombobox pyqt5
我对 Qt Designer 中的 Python GUI 小部件还有另一个问题。我正在使用 Python 3.7 和 PyQt5。
我有一个从 SQL 表生成到组合框的值列表。组合框正确显示所有值,但总共大约有 100 个值,我希望能够键入并开始自动完成,以便我可以快速查找并选择我可能需要的任何值。
我做了一些研究,这让我感到困惑。我在 Python 中创建的列表名为 listofCustOrders,因为我正在构建一个“业务 gui”来帮助我了解有关 Python 编码的更多信息。有没有办法自动完成这个列表?
from PyQt5 import QtWidgets, uic
from Classes import CustOrders as CO
import DBConnection as DB
import time
class MyWindow(QtWidgets.QMainWindow):
listofCustOrders = []
def __init__(self):
super(MyWindow, self).__init__()
uic.loadUi('PyGUI.ui',self)
self.init()
def init(self):
global listofCustOrders
listofCustOrders = CO.CustOrders.getCustOrders()
for x in listofCustOrders:
self.cbCONum.addItem(x.getCustOrderNO())
self.cbCONum.currentIndexChanged.connect(self.coSelected)
self.CObutton.clicked.connect(self.Submitted1)
self.SLabel2.hide()
def coSelected(self, text):
cbCOIndex = self.cbCONum.currentIndex()
selectedCO = listofCustOrders[cbCOIndex]
self.RLbl2.setText(selectedCO.getPart())
self.QtyLbl3.setText(str(selectedCO.getQTY()))
def Submitted1(self):
self.SLabel1.hide()
self.SLabel2.show()
CBW = str(self.cbCONum.currentText())
PN = self.RLbl2.text()
QY = self.QLINE.text()
EP = self.EMPLINE.text()
TIMER = time.strftime('%m-%d-%Y %H:%M:%S')
conn1 = DB.DBConnection.getConnection()
cursor = conn1.cursor()
cursor.execute('''
INSERT INTO database.dbo (CustOrderNo, PartNo, Qty, Employee, Color)
VALUES (?, ?, ?, ?, ?)''',
(CBW, PN, QY, EP,TIMER,))
conn1.commit()
conn1.close()
self.QLINE.clear()
self.EMPLINE.clear()
self.RLbl2.clear()
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
Qt 有用于此类任务的 QCompleter 类,下面是如何使用它的示例。
completer = QCompleter(wordList, self)
completer.setCaseSensitivity(Qt.CaseInsensitive)
comboBox.setCompleter(completer)
Run Code Online (Sandbox Code Playgroud)
仅供参考: https: //doc.qt.io/qt-5/qcompleter.html,还可以查看简单的示例,这些示例展示了如果您的模型(单词集)发生更改,如何更改完成者 - https://doc.qt。 io/qt-5/qtwidgets-tools-completer-example.html。不幸的是,这些示例是用 C++ 编写的。