私はPyQt5からちょうど編集可能なテキストボックスである基底クラス、にQLineEdit、の簡単なサブクラスを持っている:Python:PyQtで既にインスタンス化されたクラスオブジェクトにアクセスするには?
class pQLineEdit(QtWidgets.QLineEdit):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self,parent)
def mouseDoubleClickEvent(self,e):
self.setText("Test")
このクラスは正常に動作します。オブジェクトのテキストは、ダブルクリックすると実際に更新されます。
ただし、このイベントでは、別のファイルの別のインスタンス化されたクラスからオブジェクトfoo.barにアクセスする必要があります。これどうやってするの?
NameError: global name 'foo' is not defined
私はちょうど
eval("foo.bar")
を使用して自分の道をハッキングしようとしました。しかし、それはfoo.barが定義されていない文句を言う:私は私が得る
import other_file
...
def mouseDoubleClickEvent(self,e):
self.setText("Test")
foo.bar
を試してみました。私はこれがとてもシンプルだと感じますが、答えは私を逃してしまいます。
私は明確にする必要があります:foo()は、main()である別のファイルのFUNCTIONでインスタンス化されたクラスです。 SSHトンネルが含まれているため、インスタンス化されたクラスにアクセスする必要があります。私は私の質問が列挙された欺瞞だとは思わない。
他のオブジェクトとそのモジュールが何であるかについて具体的に説明する必要があります。イベントハンドラがアクセスできる場所にオブジェクトを格納する必要があります。その場合、ハンドラを含むモジュールから 'foo.bar'を含むモジュールをインポートする必要があります。 – BrenBarn
これはpyqtの質問ではないようですが、ここですでに答えられている非常に基本的なpython質問の欺瞞です。たとえば、http://stackoverflow.com/questions/15168024/python-access-objects-from-another-module – neuronet