[Python] Tkinter

基本的な枠組みの作成

・ウィンドウやフレーム(ウィジェットを格納するコンテナ)を作成する。

# ex.1
import tkinter as tk
root = tk.Tk()
f = tk.Frame(root)
f.grid()

# 実行
root.mainloop()
# ex.2
from tkinter import *
from tkinter import ttk

class CalcApp(ttk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

def main():
    root = Tk()
    root.title('簡単電卓')
    CalcApp(root)
    root.mainloop()

# メインプログラム
if __name__ == '__main__':
    main()

Tkinterを使うには、モジュール 'Tkinter' をimportする。
ttkはウィジェットの一つでex.2では使用。

トップレベルのウィジェット(ウインドウ)の実装は、root = tk.Tk() や root = Tk()で行う。アプリケーションの実行はroot.mainloop()で行う。

ウィジェットの作成

・ボタンをウインドウの中に格納、配置する。

# ex.1
# ボタンの作成
button1 = tk.Button(f, text = '1', )
# ボタンの配置
button1.grid(row = 0, column = 0)
# ex.2
# 一行に作成と配置をまとめることも可能
def create_widgets(self):
    ttk.Button(self, text = '1').grid(row = 0, column = 0)

grid()は格子状の位置を与え、ボタンの位置を指定するメソッド。

細かい点でわからないことが多い。
・TK(), Frame()はどういったメソッドか
・mainloop()をrootに使うとなぜプログラムが実行されるか
・root = Tk()とroot = tk.Tk()の差 => Tk()って何
かなり手前のところで整理できていない気がする。
classが出てくると3倍くらいわからない。selfの位置づけなど。

環境

OS : windows 10(64 bit)
Python version : 3.8.2
テキストエディタ : VSCode

この記事が気に入ったらサポートをしてみませんか?