2017-12-21 21 views
0

私はここに新しいですが、私はいくつかの答えを探していたので、私の問題を解決することは不可能です。複数のウィンドウプログラムpyqt5とpython

私はABBロボットと対話するためのPythonプログラムを作成しています。プログラムは複数のファイルで構成され、各ファイルにはウィンドウが含まれ、ロボットとの間でデータを送受信します。

ロボットと通信するために、私はソケット接続を作成します。プログラムはサーバーであり、ロボットはクライアントです。 プログラムの最初のウィンドウでソケットが作成されますが、クライアントのソケット名/アドレスが他のファイルにあるため、2番目のウィンドウがロボットに情報を送信しようとすると問題が発生します。

グローバル変数を作成しようとしましたが、動作しません。私はまた、私はファイルにしたい変数を書いて、それを読んで、この変数を転送しようとしましたが、それはタイプstrであり、私はソケットオブジェクトが必要なので、ロボットに送信することはできません。

クライアントオブジェクトをあるファイルから別のファイルに転送するにはどうすればよいですか?

ご提案は大歓迎です。

これは、メインウィンドウに任意の二次ウィンドウの親を作り、それが作成されたときに二次ウィンドウに渡されたソケット変数とメインウィンドウからそれらをオープンにすることによって行うことができ、あなたに

+0

ようこそスタックオーバーフロー! [mcve]の提供方法に関するガイダンスをお読みください。 – ekhumoro

答えて

0

ありがとうございます。例えば、

class MainWindow(QMainWindow): 
    def __init__(self): 
     QMainWindow.__init__(self) 
     self.socket = socket_information # Set the socket connection up here 

    def open_window_two(self): 
     dialog = WindowTwoClass(self.socket) 
     dialog.exec_() 

ここで、WindowTwoClassは、他のファイルからの2次ウィンドウのクラスです。この二次ウィンドウは、QMainWindowサブクラスにすることはできません。必要な機能に応じて、QWidgetまたはQDialogサブクラスになります。

class WindowTwoClass(QWidget): 
    def __init__(self, socket): 
     QWidget.__init__(self) 
     self.socket = socket 
関連する問題