前提・実現したいこと
class InputNamePage の frame のエントリで入力された値をclass ProblemPage に渡したい
もしくは、で参照したい。
該当のソースコード
python
1#------------------------------------------------------------------------------ 2# 名前入力ページクラス (継承 : tk.Frame) 3#--------------------------------------------------------------------------- 4class InputNamePage(tk.Frame): 5 6 #--- コンストラクタ 7 def __init__(self, parent, controller): 8 9 # 初期化 10 tk.Frame.__init__(self, parent) 11 12 ### フレーム表示 13 #--- フレーム生成 14 frame = ttk.Frame(self) 15 #--- フレーム配置 16 frame.pack() 17 18 19 ### ユーザー名入力表示 20 #--- ラベル生成 21 # 空白 22 spaceLabel2 = [tk.Label(frame, text="") for column in range(1)] 23 24 # ユーザー名 25 userNameLabelFont = ("Helevetice", 14) 26 userNameLabel =\ 27 ttk.Label(frame, text="ユーザー名:", font=userNameLabelFont) 28 29 #--- ラベル配置 30 # 空白 31 for index in range(1): 32 spaceLabel2[index].grid(row=index, column=0) 33 # ユーザー名 34 userNameLabel.grid(row=4, column=0) 35 36 #--- エントリー生成 37 userName = tk.StringVar() 38 userNameEntry = ttk.Entry(frame, textvariable=userName, width=30) 39 40 #--- エントリー配置 41 userNameEntry.grid(row=4, column=1) 42 43#------------------------------------------------------------------------------ 44# 問題出題ページクラス (継承 : tk.Frame) 45#------------------------------------------------------------------------------ 46class ProblemPage(tk.Frame): 47""" このクラスで上のクラスで入力された値を出力したい。"""
試したこと
Webで検索をかけて調べた。
###追記
■ ProblemFormSelect(途中略記)
python
1class OptionSelectPage(tk.Frame): 2 #--- コンストラクタ 3 def __init__(self, parent, controller): 4 5 #--- ボタン生成 6 val1 = tk.IntVar() 7 val2 = tk.IntVar() 8 val1.set(0) 9 val2.set(0) 10 radioButton1 = ttk.Radiobutton(frame1,\ 11 text="英語 → 日本語",\ 12 variable=val1,\ 13 value=0) 14 15 radioButton2 = ttk.Radiobutton(frame1,\ 16 text="日本語→ 英語 ",\ 17 variable=val2,\ 18 value=1) 19 20 #--- ボタン配置 21 radioButton1.grid(row=5, column=0) 22 radioButton2.grid(row=6, column=0) 23
■ ページを生成しているメインクラス
python
1class WordPracticeApp(tk.Tk): 2 3 #--- コンストラクタ 4 def __init__(self, *args, **kwargs): 5 6 # 初期化 7 tk.Tk.__init__(self, *args, **kwargs) 8 9 # コンテナのフレームを生成 10 container = tk.Frame(self) 11 12 # コンテナ配置 13 container.pack(side="top", fill="both", expand=True) 14 15 # コンテナのグリッドを 1x1 にする 16 container.grid_rowconfigure(0, weight=1) 17 container.grid_columnconfigure(0, weight=1) 18 19 # フレームを格納する配列 20 self.frames = {} 21 22 # ページを格納する配列 23 pages = ( 24 StartPage, 25 #InputNamePage, 26 ReadWordFilePage, 27 OptionSelectPage, 28 ProblemPage, 29 ResultPage, 30 ) 31 32 # それぞれのページに対して 33 for F in pages: 34 35 # フレームを生成 36 frame = F(container, self) 37 38 # フレームを格納 39 self.frames[F] = frame 40 41 # フレームを配置 42 frame.grid(row=0, column=0, sticky="nsew") 43 44 45 # スタートページを表示 46 self.show_frame(StartPage) 47 48 49 #--- フレームを表示 50 def show_frame(self, cont): 51 52 # WordPracticeAppのcontのフレームを格納 53 frame = self.frames[cont] 54 55 # そのフレームを上位層へ 56 frame.tkraise() 57 58 59

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/28 02:34