我正在做一個「包裝」一個我用PyQt GUI構建的程序的項目,而且我堅持着一個基本的東西。 我希望程序停止接收代碼並等待我的輸入,就像raw_input()
一樣。這裏是我的代碼:如何等待PyQt的用戶輸入與行編輯?
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class myWidget(QDialog):
def __init__(self,parent=None):
super(myWidget, self).__init__(parent)
self.lineEdit = QLineEdit()
self.textBrowser = QTextBrowser()
self.top_btn = QPushButton("Ask me")
self.bottom_btn = QPushButton("disable")
layout = QVBoxLayout()
layout.addWidget(self.textBrowser)
layout.addWidget(self.lineEdit)
layout.addWidget(self.top_btn)
layout.addWidget(self.bottom_btn)
self.setLayout(layout)
self.lineEdit.setDisabled(True)
self.lineEdit.clear()
self.connect(self.top_btn, SIGNAL("clicked()"), self.inputFunc)
self.connect(self.bottom_btn, SIGNAL("clicked()"), self.disableLine)
def inputFunc(self):
self.lineEdit.clear()
self.lineEdit.setDisabled(False)
self.textBrowser.setText("Welcome to #1 button. what do you want to do?")
userInput = self.lineEdit.text()
if userInput == "anything":
self.textBrowser.append("Ok i will leave you alone")
exit()
else:
self.textBrowser.append("say what?")
def disableLine(self):
self.lineEdit.clear()
self.textBrowser.append("Line edit is disabled")
self.lineEdit.setDisabled(True)
app = QApplication(sys.argv)
form = myWidget()
form.show()
app.exec_()
正如你所看到的,有一個Line Edit及其變量。但它不會等待我的輸入,它會繼續執行代碼,當然它不會讓我更改「if」語句的結果。 如何暫停代碼並等待用戶輸入,以便我的「if」語句結果將如raw_input()
一樣更改? (如果可能,不添加任何新的佈局)。
謝謝。
非常感謝。這很令人興奮,我正在尋找。 –