質問するログイン新規登録

回答編集履歴

1

Bファイルの単独起動情報を追加

2020/10/19 09:21

投稿

lehshell
lehshell

スコア1180

answer CHANGED
@@ -15,4 +15,48 @@
15
15
  txt.insert(tkinter.END,kwargs['id'])
16
16
  txt_pw.insert(tkinter.END,kwargs['name'])
17
17
  ```
18
- と設定してみてください。
18
+ と設定してみてください。
19
+
20
+ ### 10月19日追記
21
+ > できたのですが、Bファイルを単独で起動しようとしたときに
22
+ > txt.insert(tkinter.END, kwargs['id'])
23
+ > KeyError: 'id'
24
+ > とエラーがでてしまいます。
25
+
26
+ すでに解決されているため不要かもしれませんが
27
+ 「Bファイルを単独で起動」が「 gamen2 を単独で起動」の意味として ID と 名 を空欄で起動する前提で gamen2 を
28
+ ```Python
29
+ def main():
30
+ root = tk.Tk()
31
+ app = gamen2(master=root, id='', name='')
32
+ app.mainloop()
33
+
34
+ if __name__ == "__main__":
35
+ main()
36
+ ```
37
+ とするか gamen2 生成時のパラメータが id name 以外にないのであれば
38
+ app = gamen2(master=root)
39
+ は、そのままで、次のようにデフォルト値を持つ引数にする方法もあります。
40
+ ```Python
41
+ class gamen2(tkinter.Frame):
42
+ #def __init__(self, master=None, **kwargs):
43
+ def __init__(self, master=None, id='', name=''):
44
+ ...
45
+ #self.create_widgets(**kwargs)
46
+ self.create_widgets(id=id, name=name)
47
+ ...
48
+
49
+ def main():
50
+ root = tk.Tk()
51
+ app = gamen2(master=root)
52
+ app.mainloop()
53
+
54
+ if __name__ == "__main__":
55
+ main()
56
+ ```
57
+
58
+ なお、この場合
59
+ def create_widgets(self, **kwargs):
60
+
61
+ def create_widgets(self, id, name):
62
+ として create_widgets 内の kwargs も変更した方がバランスは良いかもしれません。