将QInputDialog文本链接到变量

时间:2016-02-29 19:23:31

标签: python-3.x pyqt

我在互联网上搜索了大约3个小时,但所有示例都使用了QLineEdit的输入对话框文本。我想将文本链接到一个变量以用于我的列表。

def gettext(self):
      text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')

      if ok:
          else...  

我该怎么办?这是我想要使用的功能。

谢谢!

1 个答案:

答案 0 :(得分:1)

QInputDialog.gettext()返回一个元组: 第一个值是输入字段中的文本(QLineEdit),第二个值是bool,True如果' OK'按下False

所以你可以这样做:

def getText(self):
    text = QtWidgets.QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')    
    if text[1]:
        username = text[0]
        print(username)

编辑01.03.2016:

如果您希望用户从值列表中进行选择:

self.selectionList = ['Jim', 'John', 'Harry', 'Charles']

def getSelection(self):
    sel = QtWidgets.QInputDialog.getItem(self, 'Text Selection Dialog', 'Select your name:', self.selectionList, current=0, editable=False)
    if sel[1]:
        username = sel[0]
        print(username)

第二次修改:

这是pyqt4中的一个工作示例:

import sys
from PyQt4 import QtCore, QtGui

class MyWidget(QtGui.QWidget): 
    def __init__(self): 
        QtGui.QWidget.__init__(self) 
        self.setGeometry(200,100,300,300)

        self.selectionList = ['Jim', 'John', 'Harry', 'Charles']

        self.pushbutton = QtGui.QPushButton('Input', self)
        self.pushbutton.setGeometry(50,75, 100, 25)
        self.pushbutton1 = QtGui.QPushButton('Select', self)
        self.pushbutton1.setGeometry(50,150, 100, 25)

        self.pushbutton.clicked.connect(self.getInput)
        self.pushbutton1.clicked.connect(self.getSelection)

    def getInput(self):
        text = QtGui.QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')    
        if text[1]:
            username = text[0]
            print(username)

    def getSelection(self):
        sel = QtGui.QInputDialog.getItem(self, 'Text Selection Dialog', 'Select your name:', self.selectionList, current=0, editable=False)
        if sel[1]:
            username = sel[0]
            print(username)

app = QtGui.QApplication(sys.argv) 
widget = MyWidget()
widget.show()
sys.exit(app.exec_())