mayogohan
@mayogohan

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

tkinterを利用した簡易なデスクトップアプリ開発について

下記コードにおいて l_dow["text"] = dow[current_dow] はなぜ必要なのか

pythonを学習し始めて数週間の者です。
京都大学が公開している資料を基に学習を進めているのですが、下記のコードのl_dow["text"] = dow[current_dow]はなぜ必要なのでしょうか?
個人的には無くても動作しそうに思えるのですが、消去すると上手く動きません。
どなたかご教授いただける方を探しています。

なお、公開されている資料には
l_dow["text"] = dow[current_dow]は、
ラベルl_dowのtext属性を更新を行っていると書かれていました。
自身でも属性などについて色々調べてみたのですが、なぜ属性を更新する必要があるのか、
そもそも属性を更新するとはどういうことなのか、いまいち理解ができませんでした。

以下にコードを記入します。(引用元の149ページに記載されているものです)
実行環境はPython3.12.0です。
引用元:https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/265459/1/Version2021_10_08_01.pdf

import tkinter as tk
dow = ["sun","mon","tue","wed","thu","fri","sat"]
current_dow = 0

def forward():
    global current_dow
    current_dow += 1
    if current_dow == 7:
        current_dow = 0
    #ここがわかりません↓    
    l_dow["text"] = dow[current_dow]

def backward():
    global current_dow
    current_dow -= 1
    if current_dow == -1:
        current_dow = 6
    #ここがわかりません↓    
    l_dow["text"] = dow[current_dow]

def fin():
    root.destroy()

root = tk.Tk()
f = tk.Frame(root)
f.grid()
#
l_dow = tk.Label(f, text=dow[current_dow])
l_dow.grid(row=0, column=0, columnspan=3)
#
b_backward = tk.Button(f, text="<-", command = backward)
b_forward = tk.Button(f,text="->", command = forward)
b_exit = tk.Button(f, text="EXIT", command= fin)
b_backward.grid(row=1, column=0)
b_forward.grid(row=1, column=1)
b_exit.grid(row=1, column= 2)

print("tkinter started")

root.mainloop()

print("tkinter stopped")
0

1Answer

l_dow["text"] = dow[current_dow]は、ボタンクリックにより、インクリメントかデクリメントしたcurrent_dowに対応した曜日の文字列を設定する処理です。(このために必要な処理です。)

l_dowはラベル(オブジェクト)で、l_dow["text"]は、そのラベルに表示する文字列(のプロパティ)です。

属性=プロパティで、ラベルやボタンといったオブジェクトには、それぞれ様々な役割のプロパティが定義されています。これらを必要により、設定したり、変更したり、ときには読み出したりして、自分がやりたいことを実現します。

このような稚拙な説明でご理解いただけるでしょうか?

1Like

Comments

  1. @mayogohan

    Questioner

    ご丁寧な解説ありがとうございます!解決いたしました!

Your answer might help someone💌