Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python用TKインターフェイスtkinter その3:いろいろなウィジェット

GUI系のご多聞に漏れず、tkinterにも色々ウィジェットが付いています

実際のところ

前回のものをベースに

import tkinter as tk
from tkinter import messagebox

class Application(tk.Frame):
    # 初期化
    def __init__(self, master=None):
        super().__init__(master)
        self.pack()
        self.create_widgets()

    # 画面の作成
    def create_widgets(self):
        # ラベルウィジェット
        self.label = tk.Label(self, text="This is a label")
        self.label.pack(side="top")
        
        # ボタンウィジェット
        self.hi_there = tk.Button(self)
        self.hi_there["text"] = "Hello World\n(click me)"
        self.hi_there["command"] = self.say_hi
        self.hi_there.pack(side="top")

        # ラジオボタンウィジェット
        self.fruit = tk.StringVar()  # ラジオボタンの選択結果を保存する変数
        self.apple_radio = tk.Radiobutton(self, text="Apple", variable=self.fruit, value="Apple")
        self.apple_radio.pack(side="top")
        self.orange_radio = tk.Radiobutton(self, text="Orange", variable=self.fruit, value="Orange")
        self.orange_radio.pack(side="top")
        self.banana_radio = tk.Radiobutton(self, text="Banana", variable=self.fruit, value="Banana")
        self.banana_radio.pack(side="top")

        # スケールウィジェット
        self.scale = tk.Scale(self, orient="horizontal")  # 横方向にスライド
        self.scale.pack(side="top")

        # 終了ボタンウィジェット
        self.quit = tk.Button(self, text="QUIT", fg="red", command=self.quit_message)
        self.quit.pack(side="bottom")

    # ボタンを押したときのアクション
    def say_hi(self):
        print("Hi there, everyone!")
        print(f"Your fruit choice: {self.fruit.get()}")  # ラジオボタンの選択結果を表示
        print(f"Scale value: {self.scale.get()}")  # スケールの値を表示

    # 終了ボタンを押したときのアクション
    def quit_message(self):
        if messagebox.askokcancel("Quit", "Do you really wish to quit?"):
            root.destroy()

root = tk.Tk()
app = Application(master=root)
app.mainloop()  # ここでレンダリング

実行すると、こんな感じ