我正在尝试为我的程序实现一个GUI,到目前为止,我使用Qt4设计器创建了基本的GUI并对其进行了转换,但我不知道如何链接" OK"按钮在终端中启动我的主脚本,还有一个框,我在其中输入一些随机数,我希望将其发送到我的主脚本。让我们说一旦我启动PyQt4脚本并输入以下数字" 123456"然后按"确定"按钮,终端窗口(archlinux)将被打开,我的主脚本将与它们一起执行(我的主脚本称为dd.py)。这是需要编辑的PyQt4代码:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(400, 79)
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(50, 30, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
self.lineEdit = QtGui.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(10, 30, 161, 31))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
答案 0 :(得分:1)
在主脚本中,您需要让它接受参数。一个非常简单的方法是做这样的事情:
# dd.py
import sys
def main(arg):
# do something here
print arg
if __name__ == "__main__":
arg = sys.argv[1]
main(arg)
然后在GUI中,您将使用子进程模块调用主脚本并传递参数。因此,在按钮的事件处理程序中,您可以执行以下操作:
subprocess.Popen("/path/to/dd.py", arg)
如果你需要能够传递开关或标志以及参数,你应该阅读argparse或optparse,具体取决于你使用的Python版本。