PyQt4教程的對話框(QInputDialog)例子里的一段代碼,為什麼要這樣寫?
def showDialog(self):
text, ok = QtGui.QInputDialog.getText(self, "Input Dialog",
"Enter your name:") #這裡這裡,為什麼要寫成「text, ok = 」這種形式?
#其他的QtGui的窗體、控制項什麼的都是一個變數名,
#這裡為什麼要用兩個寫在一起?有什麼特殊的原因嗎?if ok:
self.label.setText(str(text))
根據PyQt的文檔:http://pyqt.sourceforge.net/Docs/PyQt4/qinputdialog.html#getText
(QString, bool ok) getText (QWidget parent, QString title, QString label, QLineEdit.EchoMode mode = QLineEdit.Normal, QString text = QString(), Qt.WindowFlags flags = 0)
這個getText()函數返回的是一個二元tuple。
其第一個元是QString,If the dialog is accepted, this function returns the text in the dialog"s line edit. If the dialog is rejected, a null QString is returned.
其第二元是個Bool,
ok will be set to true if the user pressed OK and to false if the user pressed Cancel.
題主可能是對Python的tuple類型以及其相關的解構賦值(destructuring assignment)不熟悉。
例如說:$ python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&>&>&> t = (1, 2)
&>&>&> type(t)
&
&>&>&> x, y = t
&>&>&> x
1
&>&>&> y
2
&>&>&> def foo():
... return ("Yay", True)
...
&>&>&> text, ok = foo()
&>&>&> text
"Yay"
&>&>&> ok
True
&>&>&> quit()
因為這個函數的返回值有兩個啊,詳細內容可以參見 PyQt 的文檔http://pyqt.sourceforge.net/Docs/PyQt4/qinputdialog.html#getText
這跟pyqt沒關係,你是python還沒入門...
你學過python嗎
推薦閱讀: