インポートされたクラスのメソッドをメインスクリプトのクラスに接続する

llrs

使用するキーワードがわからないため、これらの問題を検索できませんでした。重複している場合や他の場所で回答されている場合は、お知らせください。

tkinterでメインウィンドウを作成し、異なる関数とクラスを持つ他のモジュールをインポートするファイルがあります。クラスのメソッドで、作成したtkinterウィジェットに何かを出力したいと思います。どうすればいいですか?

file1.py:

from tkinter import * # I use python 3
import tkinter.scrolledtext as tkst
from file2 import *

class Application(Frame):
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.output_text = tkst.ScrolledText(self, width = 100, height = 20,
                                wrap = WORD, bd=0)
        self.output_text.grid(row = 9, column = 0, columnspan = 5, sticky="nsew")

root = Tk()
root.title("Game")
app = Application(root)
center(root)
root.mainloop()

file2.py:

class Hero(object):
    def attack(self, enemy, damage):
        Hero.hits+=1
        if self.hits==0:
            attack = "{}, attacks our enemy {}. Producing {} points of damage.\n".format(
                      self.__name, enemy.creature, truncate(damage))
            # I use code like this in the Application definition.
            app.output_text.insert(END, attack) 

しかし、それは次のようになりました。

  File "C:\....\file2.py", line 112, in attack
    app.output_text.insert(END, attack)
NameError: global name 'app' is not defined

あるモジュールを別のモジュールに関連付ける必要があると思いますが、方法がわかりません(super関数については読みましたが、ここでは使用方法がわかりません)。そのようなことをするか、ヒーローとアプリケーションの間で情報を渡すためのイベントを作成する必要がありますか?

nu11p01n73R

クラスHeroをにインポートし、アプリを別の引数として渡すことでfile1.py関数を呼び出すことができattackます

注:敵とダメージが何であるかわからないので、あなたのためにそれをスキップしています

from tkinter import * # I use python 3
import tkinter.scrolledtext as tkst
from file2 import *
from file2 import Hero#importing the oth

class Application(Frame):
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.output_text = tkst.ScrolledText(self, width = 100, height = 20,
                                wrap = WORD, bd=0)
        self.output_text.grid(row = 9, column = 0, columnspan = 5, sticky="nsew")

root = Tk()
root.title("Game")
app = Application(root)
center(root)

h = Hero()
h.attack(enemy, damage, app) #passing as third argument)

root.mainloop()

file2.py

class Hero(object):
    def attack(self, enemy, damage,app): #change the defenition
        Hero.hits+=1
        if self.hits==0:
            attack = "{}, attacks our enemy {}. Producing {} points of damage.\n".format(
                      self.__name, enemy.creature, truncate(damage))
            # I use code like this in the Application definition.
            app.output_text.insert(END, attack) 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インポートされたクラスのプライベートメソッドを呼び出す

分類Dev

XamariniosプロジェクトでインポートされたPCLライブラリのメソッドにアクセスする方法

分類Dev

基本クラスで保護されたメソッドのリターンポインタをキャストする代わりに?

分類Dev

静的ファクトリーメソッドでオーバーライドされたメソッドでインスタンスを作成するときに、囲んでいるクラスのプライベートフィールドにアクセスするにはどうすればよいですか?

分類Dev

テンプレート化されたクラスのプロトタイプメソッドのメソッドヘッダーを宣言する

分類Dev

メソッドへのポインタを派生クラスから基本クラスにキャストするための最良のアプローチ

分類Dev

クラスをインポートせずにクラスのメソッドを取得する方法

分類Dev

インポートされたクラスメソッドを使用したPython型のヒント

分類Dev

インポートされたインターフェイスを実装する抽象クラス内のメソッドを呼び出す方法は?

分類Dev

シングルトンクラスのシグナルをメインウィンドウのクラススロットまたはメソッドに接続するにはどうすればよいですか?

分類Dev

XE5にインポートされたJNIAndroidインポートクラスにイベントメソッドを実装する方法

分類Dev

Javaコンパイラがパッケージプライベートスーパータイプで定義されたパブリックメソッドに可視性ブリッジメソッドを追加するのはなぜですか?

分類Dev

インスタンス作成をカウントするためにクラス変数とクラスメソッドを使用しているときにサポートされていないオペランドタイプエラー

分類Dev

コンストラクターのプロトタイプで定義されたメソッドは、Javascriptのコンストラクターのインスタンスメンバーにどのようにアクセスできますか?

分類Dev

ネストされたクラスのプライベートメンバーに、それを囲むクラスのメソッドがアクセスできるのはなぜですか?

分類Dev

配列を使用するメソッドのインスタンス化されたオブジェクトをパラメーターに使用する方法

分類Dev

クラスプロトタイプまたは酵素ラッパーインスタンスを介してreactコンポーネントのメソッドを正しくスパイするにはどうすればよいですか?

分類Dev

Pythonのクラスインスタンス化からメソッドをインポートする方法は?

分類Dev

アノテートされたクラスのすべてのパブリックメソッド(親クラスのメソッドを含む)のSpring AOPポイントカット

分類Dev

スマートポインターのベクトルにpush_backメソッドを使用するとアプリがクラッシュする

分類Dev

スマートポインターのベクトルにpush_backメソッドを使用するとアプリがクラッシュする

分類Dev

Python:インポートエラー。他のクラスからメソッドにアクセスする

分類Dev

インポートされたクラスのメソッドを呼び出すときにAsync / Awaitを使用する

分類Dev

メインクラスのメソッドを使用して、ネストされたクラスからジェネリック型を返す方法

分類Dev

派生クラスは、内部クラスのフレンドである親クラスの保護された内部クラスのプライベートメソッドにアクセスできますか?

分類Dev

メソッドとクラスにカーソルを合わせたときに、インポートされたライブラリのjavadocを表示するにはどうすればよいですか?

分類Dev

イベントリスナーにコンストラクタのメソッドを使用する方法

分類Dev

具象子クラスのオーバーライドされたメソッドから、抽象クラスのコンストラクターを介してインスタンス化されたオブジェクトの属性にアクセスするにはどうすればよいですか?

分類Dev

ネストされたクラスのメソッドからの基本クラスの「this」ポインタはどのようになりますか?

Related 関連記事

  1. 1

    インポートされたクラスのプライベートメソッドを呼び出す

  2. 2

    XamariniosプロジェクトでインポートされたPCLライブラリのメソッドにアクセスする方法

  3. 3

    基本クラスで保護されたメソッドのリターンポインタをキャストする代わりに?

  4. 4

    静的ファクトリーメソッドでオーバーライドされたメソッドでインスタンスを作成するときに、囲んでいるクラスのプライベートフィールドにアクセスするにはどうすればよいですか?

  5. 5

    テンプレート化されたクラスのプロトタイプメソッドのメソッドヘッダーを宣言する

  6. 6

    メソッドへのポインタを派生クラスから基本クラスにキャストするための最良のアプローチ

  7. 7

    クラスをインポートせずにクラスのメソッドを取得する方法

  8. 8

    インポートされたクラスメソッドを使用したPython型のヒント

  9. 9

    インポートされたインターフェイスを実装する抽象クラス内のメソッドを呼び出す方法は?

  10. 10

    シングルトンクラスのシグナルをメインウィンドウのクラススロットまたはメソッドに接続するにはどうすればよいですか?

  11. 11

    XE5にインポートされたJNIAndroidインポートクラスにイベントメソッドを実装する方法

  12. 12

    Javaコンパイラがパッケージプライベートスーパータイプで定義されたパブリックメソッドに可視性ブリッジメソッドを追加するのはなぜですか?

  13. 13

    インスタンス作成をカウントするためにクラス変数とクラスメソッドを使用しているときにサポートされていないオペランドタイプエラー

  14. 14

    コンストラクターのプロトタイプで定義されたメソッドは、Javascriptのコンストラクターのインスタンスメンバーにどのようにアクセスできますか?

  15. 15

    ネストされたクラスのプライベートメンバーに、それを囲むクラスのメソッドがアクセスできるのはなぜですか?

  16. 16

    配列を使用するメソッドのインスタンス化されたオブジェクトをパラメーターに使用する方法

  17. 17

    クラスプロトタイプまたは酵素ラッパーインスタンスを介してreactコンポーネントのメソッドを正しくスパイするにはどうすればよいですか?

  18. 18

    Pythonのクラスインスタンス化からメソッドをインポートする方法は?

  19. 19

    アノテートされたクラスのすべてのパブリックメソッド(親クラスのメソッドを含む)のSpring AOPポイントカット

  20. 20

    スマートポインターのベクトルにpush_backメソッドを使用するとアプリがクラッシュする

  21. 21

    スマートポインターのベクトルにpush_backメソッドを使用するとアプリがクラッシュする

  22. 22

    Python:インポートエラー。他のクラスからメソッドにアクセスする

  23. 23

    インポートされたクラスのメソッドを呼び出すときにAsync / Awaitを使用する

  24. 24

    メインクラスのメソッドを使用して、ネストされたクラスからジェネリック型を返す方法

  25. 25

    派生クラスは、内部クラスのフレンドである親クラスの保護された内部クラスのプライベートメソッドにアクセスできますか?

  26. 26

    メソッドとクラスにカーソルを合わせたときに、インポートされたライブラリのjavadocを表示するにはどうすればよいですか?

  27. 27

    イベントリスナーにコンストラクタのメソッドを使用する方法

  28. 28

    具象子クラスのオーバーライドされたメソッドから、抽象クラスのコンストラクターを介してインスタンス化されたオブジェクトの属性にアクセスするにはどうすればよいですか?

  29. 29

    ネストされたクラスのメソッドからの基本クラスの「this」ポインタはどのようになりますか?

ホットタグ

アーカイブ