別のプログラムでtkinterウィンドウのボタンをクリックすると、pythonプログラム(ex:program.py)を実行したいと思います。しかし、モジュールからクラスをインポートすると、クラスが実行されます。クリックすると、モジュールを実行するボタンを取得するにはどうすればよいですか?どんな支援も大歓迎です。Tkinterボタン - インポートと実行モジュール
ラン(program.py)へその他のモジュール:Tkinterのボタンで
class sampleProgram():
def DoSomething():
print('Do Something')
モジュール:
from program import DoSomething
class Window(Frame)
def __init__(self,master = None):
<Stuff In Window>
def addWidgets(self):
<Widgets To Add>
def init_window(self):
self.pack(fill=BOTH, expand=1)
RunButton = Button(self, text="Run", command=<**What Goes Here To Run sampleProgram?**>)
'class'ではなく' class'(すべて小文字)を意味すると仮定して、 'program'モジュールのインポートに問題はありません。 – BlackJack
@BlackJack - お返事ありがとうございます。私は質問を編集しましたが、@ ReblochonMasqueの元の応答に基づいて動作させることができました。関数をクラスに入れるのではなく、 'staticmethod'を使うことについてのあなたのコメントを説明できますか?私はそれを書く良い方法を学ぶ機会に感謝します! –
メソッドが最初の引数として呼び出されたインスタンスを受け取らない場合、メソッドは実際にはメソッドではなく、これは[staticmethod()](https://docs.python.org/2/)で明確にする必要があります。 library/functions.html#staticメソッド)。それ以外の場合はインスタンス上で呼び出すことはできません。また、関数/ "静的メソッド"をクラスに入れるのはコードの匂いです。まれに、それは理にかなっていますが、あなたがなぜクラスに詰め込まれた関数の代わりに単に普通の関数ではないのかを説明することができる場合のみです。 – BlackJack