2016-10-18 16 views
0

私は3つの入力とコンボボックスからの選択をユーザに促すインタフェースを持っています。私がしたいことは、ユーザーが入力したすべての情報を持っていることです。ボタンを押すと、その入力はプロジェクトの後続のプロセス(フォルダの作成、コピーなど)で実行されます。PyQt5 GUIからメインコードにユーザ入力を渡す

私の問題は、ユーザー入力から割り当てる変数を取得する方法がわかりません。 if___name___の変数を呼び出した後にapp.exec_()を配置すると、割り付けられないように見えます。この.pyファイルをどのように呼び出して、必要な入力をコードの他の部分に渡すことができますか?明確にするために私の最善を尽くしていない感が病気になっている。このので、もし任意の助けのおかげで、私は

from new2 import Ui_Line 
import nextProcess 
from PyQt5 import QtCore, QtGui, QtWidgets 
import glob, os, shutil 


    #GUI Called from 'new2' now apply functions to create the line based on users inputs 
class window(QtWidgets.QMainWindow, Ui_Line): 
    def __init__(self, parent = None): 
     QtWidgets.QMainWindow.__init__(self, parent) 
     self.setupUi(self)        
     self.pushButton.clicked.connect(self.assign)  


#Function that happens when the 'click line' button is pressed 
    def assign(self): 
     num1 = str(self.num1EDIT.toPlainText()) 
     num2 = str(self.num2EDIT.toPlainText()) 
     num3 = str(self.num3EDIT.toPlainText()) 
     mas = str(self.comboBox.currentText()) 

     if mas == 'Path 1': 
      master = 'cbm' 
     elif mas == 'Path 2': 
      master = 'crwt' 
     else: 
      master = 'wst' 

     #QtCore.QCoreApplication.instance().quit() 
     """Potential fix edit 
     proc2 = nextProcess() <---- Do I need to put nextProcess inside the assign() or in the window()? 
     """ 
     return num1, num2, num3, master 

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    newWindow = window(None) 
    newWindow.show() 
    app.exec_() # <---- This is my fix, but I know this probably isn't correct 
    info = newWindow.assign() 
    num1 = info[0] 
    num2 = info[1] 
    num3 = info[2] 
    master = info[3] 
    next = nextProcess(num1, num2, num3, master) 

答えて

0

代わりにプッシュボタンのclicked()信号に接続されたスロットを有していると... PythonとQTに新しい終了していますアプリケーションでは、適切な値を使用したいコードを実行してください。

assign()メソッドは、より適切にはcallNextProcess()という名前になり、ウィジェットから値を取得し、直接nextProcess()を呼び出します。

+0

クラス 'window()'または関数assignでnextProcessを渡す必要がありますか?私はちょうどそれを呼び出す方法で失われています。 – Chris

+0

通常、このメソッドはクラス自体のメンバになります。あなたは 'self'変数の中のクラスインスタンスにアクセスすることができ、そこからテキストフィールドとその値にアクセスすることができます。しかし、必要なのは、ここにある数字( 'num1'など)だけであれば、' nextProcess() 'はメンバーメソッドである必要はありません。あなたのコードからどちらかの方法が問題ないようです。 – bnaecker

関連する問題