質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1519閲覧

あるclassで定義したインスタンス変数を他classから読み出したい

hi_lite1124

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/20 05:34

前提・実現したいこと

Python Tkinter を使用して複数ウィンドウのGUIアプリclass化して作成しています。
1つ目のウィンドウで、csvファイルのパスを読み込み、2つ目のウィンドウで取得したcsvファイル
をもとにグラフを表示したいです。

import Tkinter
from tkinter import filedialog as fld

class App1(tk.Frame):
def init(self,master):
super().init(master)
self.pack()

self.master.geometry(“600x600”) self.master.title(“ファイルを選択”) self.create_widget() self.file_op() def create_widget(self) button = tk.Button(self.master,text=“ファイルを選択”) button.pack() button[“command”] = self.new_window def file_op(self): type = [“(csvファイルを開く”,”*csv”)] dir = r”C” self.f_name = fld.askopenfilename(filetype=type,initialdir=dir ) def new_window(self): new_win = tk.Toplevel(self.master) app = App2(new_win)

class App2(tk.Frame):
def init(self,master):
〜このクラスで、App1のf_nameを呼びたい〜

python

試したこと

クラスの継承を試したが、App1とApp2でウィジェットの数が違うため、やり方がわからない

補足情報(FW/ツールのバージョンなど)

クラスでのプログラミング初心者な為、知識不足な点が多いと思いますが、回答よろしくお願いします。
追加で、欲しい情報がありましたらお答えします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こういう場合なら、

def new_window(self):
new_win = tk.Toplevel(self.master)
app = App2(new_win,self.f_name)

class App2(tk.Frame):
def init(self,master,fname):
self.f_name = fname

とやるでしょう。

投稿2021/08/20 06:25

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hi_lite1124

2021/08/20 06:47

できました! ありがとうございます????
guest

0

全部は読んでませんが、質問の内容からすると、 App1でファイル名を取得したら、 App2のファイル名受け取り関数を呼び出してファイル名を通知するのがいいと思います。

別のクラスのものは基本的には独立したものと考えるべきなので、インスタンス間で情報をやりとりするイメージです。
インスタンス間で情報を共有するというようなことは考えるべきへだありません。

投稿2021/08/20 05:44

TakaiY

総合スコア13792

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hi_lite1124

2021/08/20 05:52

回答ありがとうございます。 App2でファイル名取得関数を作成し、App1で App2をインスタンス化し関数を呼び出すということでしょうか? 理解力が乏しく申し訳ありません。
TakaiY

2021/08/20 05:58 編集

App2をどうやってインスタンス化するかは設計によります。 別にメインの処理があるのであればその処理が行なうべきですし、App1がメインの処理なのであれば、App1がするのがいいでしょうね。
hi_lite1124

2021/08/20 06:02

ありがとうございます! 試してみます!
guest

0

コメントミスにより削除

投稿2021/08/20 05:51

編集2021/08/20 05:53
hi_lite1124

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問