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

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

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

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

Q&A

1回答

2322閲覧

字下げについて

Casablanca_mtg

総合スコア209

Python

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

0グッド

1クリップ

投稿2016/08/15 05:58

お世話になります
本日マイナビ第26章を勉強しております
http://news.mynavi.jp/series/python/026/
この中でどうしてもコマンドの字下げがわかりません。エラーが出てしまいます。どこが間違っているのでしょうか?コピペで貼り付けた分です。何も触っていません
http://www.hcn.zaq.ne.jp/cabnw708/pic/2016_8.15.py
関数の後の字下げはわかりますが(ブロックごとでの字下げの意味も分かるのですが・・・・)
ご教授ください。よろしくお願いいたします

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

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

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

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

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

issei.

2016/08/15 06:05

8行目のスペースが一個足りないのと、1行目冒頭はスペース不要だと思います。
issei.

2016/08/15 06:06

(まさかこれだけではあるまい
Casablanca_mtg

2016/08/15 06:54

お世話になります。 return "Count:{}".format(self.value)ここまではできています(エラーは出ません) <<< f = tk.Frame() <<< c1 = Counter(value=0, master=f) <<< c2 = Counter(value=5, master=f) <<< c1.pack() <<< c2.pack() <<< f.pack() <<< f.mainloop() この形にならないと駄目なのでしょうか? (まさかこれだけではあるまい→継承(tk.Frame)のことでしょうか?
issei.

2016/08/15 07:16

エラーが出ないという点がひっかかるのですが、まず、「tk.Frame.__init__(self, master)」の部分はCounterクラスのinit関数の中に書くべきでは?
issei.

2016/08/15 09:07

(これ、元の記事のコードが間違っていると思います
issei.

2016/08/15 09:17

ガチャガチャ弄ってたら動いたので、回答に反映しました。これでなんとかなれば幸いです。
guest

回答1

0

Tkinterについて存じ上げないため勘ですみませんが、こう書けばよいのではないかと。
※元記事が間違っています。正しいコンストラクタ関数名は__init__です。

Python

1import Tkinter as tk 2 3class Counter(tk.Frame): 4 def __init__(self, master=None, value=0): 5 self.value = value 6 7 tk.Frame.__init__(self, master) 8 font = ("Helevetica", 32, "bold") 9 self.label = tk.Label(self, 10 text=self.getText(), 11 font=font, bg="red") 12 self.button = tk.Button(self, text="Click", 13 command=self.clicked) 14 self.label.pack() 15 self.button.pack() 16 17 def clicked(self): 18 self.value += 1 19 self.label.configure(text=self.getText()) 20 21 def getText(self): 22 return "Count:{}".format(self.value) 23 24f = tk.Frame() 25c1 = Counter(value=0, master=f) 26c2 = Counter(value=5, master=f) 27c1.pack() 28c2.pack() 29f.pack() 30f.mainloop()

投稿2016/08/15 07:20

編集2016/08/15 13:54
issei.

総合スコア326

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

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

attakei

2016/08/15 09:08

横からになりますが、 def init(self, master=None, value=0): を def __init__(self, master=None, value=0): に変えれば問題なく動きました。
issei.

2016/08/15 09:18

ありがとうございます!(修正してからコメントに気づいたとか言えない
Casablanca_mtg

2016/08/15 23:54

ありがとうございます。実のところこの部分はなぜ init なのかと思っていましたが,(通常は__init__で初期化するものだと)しかしながらこういう使い方もあるのかと。字下げをやってエラーが出なくf = tk.Frame()この部分になると必ずエラーになりました。其れでわからなくなって質問しました。issei.さま、attakeiさまありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問