我有一段代码迭代LineEdit小部件来构建一个字符串。我遇到的问题是它似乎随机迭代使解析字符串变得非常困难。
for widget in qApp.allWidgets():
if isinstance(widget, QLineEdit):
insertQuery += widget.displayText()
答案 0 :(得分:1)
allWidgets()
不保证任何特定订单。有几种方法可以实现您的目标。
nextInFocusChain()
移至订单中的下一个项目。dict
,并将订单号作为键,然后加入值。QLineEdit
的某些命名约定,例如向窗口小部件添加订单号objectName
您选择哪种方式取决于您,具体取决于您创建UI的方式。
答案 1 :(得分:0)
好的,我有一个解决方案,感谢@mFoxRU
首先,我在循环中设置objectName以创建行编辑对象
LineEdit.setObjectName(str(i))
然后我使用FocusOut将行编辑对象的值设置为字典
LEDict = {'1': '', '2': '', '3': '', '4': '', '5': '', '6': '', '7': '', '8': '', '9': '', '10': '', '11': '', '12': ''}
if event.type() == QEvent.FocusOut:
LEDict[widget.objectName()] = widget.displayText()
return False
最后,我使用范围迭代字典,我可以使用它来构造sql语句
for i in range(12):
x = i + 1
print(LEDict[str(x)])
实际上,我已经取消了for循环,转而使用单个语句直接调用字典元素来构造sql代码。
testInsert = "Insert INTO address VALUES(" + LEDict["1"] + ", " + LEDict["2"] + ")"