Python 如何使用带有输入对话框的QCompleter?
我正在编写一个Python应用程序,用户可以在对话框中输入字符串。如何使用QCompleter简化输入 我已经在不同的网站上搜索过了,并且从 但是找不到解决此问题的任何帮助 在我看来,QCompleter似乎只适用于QLineEdit和QComboBox。(请证明我错了) 如果有人能给我看一些代码示例,告诉我如何处理这个问题,这将对我有很大帮助 如果无法在QInputDialog中使用QCompleter,你们有解决方法吗Python 如何使用带有输入对话框的QCompleter?,python,pyqt,pyqt5,qcompleter,qinputdialog,Python,Pyqt,Pyqt5,Qcompleter,Qinputdialog,我正在编写一个Python应用程序,用户可以在对话框中输入字符串。如何使用QCompleter简化输入 我已经在不同的网站上搜索过了,并且从 但是找不到解决此问题的任何帮助 在我看来,QCompleter似乎只适用于QLineEdit和QComboBox。(请证明我错了) 如果有人能给我看一些代码示例,告诉我如何处理这个问题,这将对我有很大帮助 如果无法在QInputDialog中使用QCompleter,你们有解决方法吗 非常感谢=)有两种可能的解决方案: 使用以下内容,通过窗口小部件之间的
非常感谢=)有两种可能的解决方案:
- 使用以下内容,通过窗口小部件之间的父子关系获取
从PyQt5导入QtCore、QtGui、qtwidget
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
button=QtWidgets.QPushButton(“按我”,单击=自我。再次单击)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(按钮)
@QtCore.pyqtSlot()
def onClicked(自):
QtCore.QTimer.singleShot(0,self.onTimeout)
ian,okPressed=qtwidts.QInputDialog.getText(
自我,“伊恩”,“请输入伊恩:”
)
@QtCore.pyqtSlot()
def onTimeout(自我):
dialog=self.findChild(qtwidts.QInputDialog)
如果对话框不是“无”:
le=dialog.findChild(qtwidts.QLineEdit)
如果le不是无:
单词=[“阿尔法”、“欧米茄”、“奥米克龙”、“泽塔”]
completer=qtwidts.QCompleter(单词,le)
lesetcompleter(completer)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=Widget()
w、 调整大小(320240)
w、 show()
sys.exit(app.exec_())
- 不要使用静态方法并使用相同的元素创建:
从PyQt5导入QtCore、QtGui、qtwidget
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
button=QtWidgets.QPushButton(“按我”,单击=自我。再次单击)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(按钮)
@QtCore.pyqtSlot()
def onClicked(自):
dialog=QtWidgets.QInputDialog(self)
对话框.setWindowTitle(“IAN”)
setLabelText(“请输入IAN:”)
dialog.setTextValue(“”)
le=dialog.findChild(qtwidts.QLineEdit)
单词=[“阿尔法”、“欧米茄”、“奥米克龙”、“泽塔”]
completer=qtwidts.QCompleter(单词,le)
lesetcompleter(completer)
好的,文本=(
dialog.exec_uz()==qtwidts.QDialog.Accepted,
dialog.textValue(),
)
如果确定:
打印(文本)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=Widget()
w、 调整大小(320240)
w、 show()
sys.exit(app.exec_())
非常感谢您的快速回答!我真的很感激。我使用了你的第一个建议,它对我非常有效。编辑:在这一行dialog.exec_()==qtwidts.QDialog.Accepted上,您需要使用QInputDialog而不是QDialog。
ian, okPressed = QInputDialog.getText(self, "IAN", "Please enter IAN:")