実際のところ
import tkinter as tk from tkinter import messagebox class Application(tk.Frame): # 初期化 def __init__(self, master=None): super().__init__(master) self.grid(sticky="nsew") # self.pack() を self.grid() に変更 self.create_widgets() # 画面の作成 def create_widgets(self): # ラベルウィジェット self.label = tk.Label(self, text="This is a label") self.label.grid(row=0, column=0, sticky="nsew") # ボタンウィジェット 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.grid(row=0, column=1, sticky="nsew") # ラジオボタンウィジェット self.fruit = tk.StringVar() # ラジオボタンの選択結果を保存する変数 # ラジオボタンを同じ列に配置 self.apple_radio = tk.Radiobutton(self, text="Apple", variable=self.fruit, value="Apple") self.apple_radio.grid(row=0, column=2, sticky="nsew") self.orange_radio = tk.Radiobutton(self, text="Orange", variable=self.fruit, value="Orange") self.orange_radio.grid(row=1, column=2, sticky="nsew") self.banana_radio = tk.Radiobutton(self, text="Banana", variable=self.fruit, value="Banana") self.banana_radio.grid(row=2, column=2, sticky="nsew") # スケールウィジェット self.scale = tk.Scale(self, orient="horizontal") # 横方向にスライド self.scale.grid(row=0, column=3, sticky="nsew") # 終了ボタンウィジェット self.quit = tk.Button(self, text="QUIT", fg="red", command=self.quit_message) self.quit.grid(row=0, column=4, sticky="nsew") # ボタンを押したときのアクション 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() root.grid_columnconfigure((0, 1, 2, 3, 4), weight=1) # 各列に均等にスペースを割り当て root.grid_rowconfigure((0, 1, 2), weight=1) # 各行に均等にスペースを割り当て app = Application(master=root) app.mainloop() # ここでレンダリング
動かすと、こんな感じ