クラスへの移行練習-① ②

先人のプログラムを利用させて頂くには、やはりクラス(特に継承機能)を理解する必要が有ります。

そこで基本的なプログラムを基に、継承クラスまで試してみました。

① クラスを使わないプログラム
  ・globalを使わないと変数の結果を他の関数に渡せないのが難点
  (他にも方法が有ると思うが知らない)。

1import tkinter as tk
2 
3root = tk.Tk()
4 
5 
6label = tk.Label(root, text=1)
7label.pack(pady=5) #padyで上下に余裕ができる
8 
9 
10number =1
11 
12def clicked():
13    global number
14    label["text"] = get_number() #configure(get_numert())でもOK
15 
16def get_number():
17    global number
18    number += 1
19    return number 
20 
21 
22button = tk.Button(root, text="Click me.", command=clicked)
23button.pack(pady=5)
24 
25root.mainloop()

このようになります。

 

② クラスを使うcode
  ここでは未だクラスの有難みは分からない。 
  クラスでのwidget(部品)の継承で、有難みが分かります。

1import tkinter as tk
2 
3root = tk.Tk()
4 
5 
6class Counter():
7    def __init__(self, number=2):
8        self.number = number        
9                
10        self.label = tk.Label(root, bg="moccasin", text=self.get_number())
11        self.label.pack()
12 
13        ### クリックでself.numberを増やし、ラベル文字をself.get_numbert()からreturnで受け取っている。
14        self.button = tk.Button(root, text="Click", bg="powderblue",  command=self.clicked)
15        self.button.pack()
16 
17        
18    def clicked(self):
19        self.number +=1
20        self.label["text"] = self.get_number() # 下でもOK
21        #self.label.configure(text= self.get_number())
22 
23    def get_number(self):
24        return self.number # 下は文字列整理している
25        #return f"Count:{self.number}".format()
26        
27 
28Counter(5) # 初期設定のnumberは置き換え有られる(5からのカウントとなる)
29 
30root.mainloop()

runすると下図のように表示される。

 

 

 

 

続く

Python別館
Python別館 目次

Pythonで作成したアプリ関連の記事は「Python別館」に、widgetやその使用方法・それを使 …

Python小学館
csvファイルの呼び込み その二

textファイルでもcsvファイルでも読めるように、読込機能だけのcodeをアップしておきます。# …

Python小学館
Q&A テンプレート script編

先に見栄えの良いGUIで作る英単語学習アプリを上げましたが、今回はその基になるscriptによるアプ …