2016-02-29 71 views
0

我在互聯網上搜索了大約3個小時,但所有示例都使用QLineEdit的輸入對話框文本。我想將文本鏈接到與我的列表一起使用的變量。將QInputDialog文本鏈接到變量

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

     if ok: 
      else... 

我該怎麼辦?這是我想要使用的功能。

謝謝!

回答

1

QInputDialog.gettext()返回一個元組: 第一個值是在inputfield(QLineEdit)的文本,第二個是布爾,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) 

編輯2016年3月1日:

,如果你希望用戶從值列表中選擇:

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_()) 
+0

我得到這個錯誤:「類型錯誤:參數不匹配任何重載電話: QInputDialog.getText(QWidget的,STR,STR,QLineEdit.EchoMode模式= QLineEdit.Normal, (str,bool):參數1有意想不到的類型'bool' QInputDialog.getText(QWidget,str,str,QLineEdit.EchoMode,str,Qt.WindowFlags,Qt.WindowFlags flags = 0) - > Qt.InputMethodHints) - >(str,bool):參數1有意想不到的類型'bool'「 我使用pyQt4是它的問題? –

+0

我無法重現您的錯誤。我在pyqt4中添加了一個工作示例來回答我的問題 –