而不是命令行上的输入标志,使用系统argv,我想更改python程序,这样带有对话框的GUI允许用户提供一些问题的答案。在按下“应用”按钮后,我希望对话框的图形用户界面消失,然后代码正常运行与对话框中提供的变量。我尝试过很多不同的方法来使用QtGui。要么它崩溃了,要么主程序的答案不知道。下面我展示了我的许多尝试之一。在本例中,按下应用按钮后,答案未知。输出是after widget answer1 =
我将非常感谢您的帮助,如何更改此代码,使变量“a1”填充对话框中给定的字符串。
谢谢您!在
^{pr2}$
多亏了JRazor,这才是最终的解决方案:import sys
from PyQt4 import QtGui
class Widget(QtGui.QDialog):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.answer1 = QtGui.QLabel()
q1Edit = QtGui.QLineEdit()
q1Edit.textChanged.connect(self.q1Changed)
self.answer2 = QtGui.QLabel()
q2Edit = QtGui.QLineEdit()
q2Edit.textChanged.connect(self.q2Changed)
grid = QtGui.QGridLayout()
grid.setSpacing(20)
grid.addWidget(QtGui.QLabel('Question 1'), 1, 0)
grid.addWidget(q1Edit, 1, 1)
grid.addWidget(QtGui.QLabel('Question 2'), 2, 0)
grid.addWidget(q2Edit, 2, 1)
applyBtn = QtGui.QPushButton('Apply', self)
applyBtn.clicked.connect(self.close)
grid.addWidget(applyBtn,3,2)
self.setLayout(grid)
self.setGeometry(300, 300, 350, 300)
def q1Changed(self, text):
self.answer1.setText(text)
def q2Changed(self, text):
self.answer2.setText(text)
def returnAnswer1(self):
return self.answer1.text()
def returnAnswer2(self):
return self.answer2.text()
@staticmethod
def getData(parent=None):
dialog = Widget(parent)
dialog.exec_()
return [dialog.returnAnswer1(), dialog.returnAnswer2()]
def main():
app = QtGui.QApplication([])
window = Widget()
data = window.getData()
print data[0]
print data[1]
if __name__ == '__main__':
main()