初版作成 2022.4.16
最終更新 2024.04.01
◯ https://qiita.com/nnahito/items/ad1428a30738b3d93762
import tkinter as tk root = tk.Tk() # 最初に記述 メインウィンドウを作成 root.title("app name") root.geometry("1000x700") # サイズを指定するとき root.geometry() # 中身に応じてサイズは自動 root もフレームの一種 この場所に widget の生成と配置を記述 root.mainloop() # 最後に記述 label1 = tk.Label( .... ) のように記述すると、 label1 はグローバル変数のオブジェクトとなる。
参考サイト:https://www.shido.info/py/tkinter2.html ・grid を使う widget1.grid(column=0, row=0, sticky="EWNS") frame1.rowconfigure(0, weight=1) # 引き延ばされたとき 1:1 で伸びる frame1.columnconfigure(0, weight=1) # 引き延ばされたとき 1:1 で伸びる frame1.columnconfigure(1, weight=1) ・pack を使う widget1.pack(side=tk.LEFT) ・layout を使う(未確認) widget1.place(x=10, y=100)
label1 = tk.Label( A ) label1.grid( B ) padx=20, pady=30 のように指定する A で pad を指定すると Label の内側 B で pad を指定すると Label の外側 B で ipad を指定すると Label の内側 (A と同じ)
複数のウィジェットを乗せる土台 frame1 = tk.Frame(parent_frame, padx=5, pady=5, bg="#ffd0d0")
label1 = tk.Label(parent_frame, font=('',fontsize), padx=5, pady=5, text="文字列", fg="#ff0000", bg="#000000")
text1 = tk.Entry(parent_frame, font=('', fontsize), width=10) text1.configure(state='normal', width = 50) # 入力可 state='readonly' text1.insert(0, '文字列') # 1文字目に挿入 text1.insert(tk.END, '文字列') # 末尾に挿入 中身の取得 moji = text1.get() 内容削除 text1.delete(0, tk.END) # 開始位置, 終了位置
memo1 = tk.Text(parent_frame, width=35, height=5, font=('',fontsize), blockcursor = True) 内容の取得 moji = memo1.get('1.0', 'end -1c')
コールバック関数は引数なし ( start() ) button1 = tk.Button(parent_frame, font=('', fontsize), text='文字', command=start) # 押されたとき呼び出す関数は def start(): コールバック関数は引数付き ( start2(0)) button2 = tk.Button(parent_frame, font=('', fontsize), text='文字', command=lambda:start2(0))
scroll_text1 = tk.scrolledtext.ScrolledText(parent_frame, state='disabled', font=('', fontsize), width=40, height=10, bg="#d0d0d0")
from tkinter import ttk combobox1 = ttk.Combobox(parent_frame, font=('', fontsize)) 値のセット cb_list = [1, 2, 3, 4, 5] cb_tuple = tuple(cb_list) # combobox の要素はタプルで指定 # list から tuple を作れる combobox1['values'] = cb_tuple combobox1.set("ウィンドウに表示する文字列") 値の取得 moji = combobox1.get()
ウィジェットにイベントを結びつける text1.bind(sequence=<Return>, func=func1) button1.bind(sequence=<Button-1>, func=func2) def func1(event):
img1 = tkinter.PhotoImage(file = "img1.png") canvas.create_image(x, y, image = img1, tag = "image1") 更新 img2 = tkinter.PhotoImage(file = "img2.png") canvas.delete("image1") canvas.create_image(x, y, image = img2, tag = "image1") (注意!) img1, img2 はグローバル変数でなくてはならない。 def の中でローカル変数として img2 = .... を実行すると def から抜けた瞬間に消えてしまうため、 画像が表示されない。 画像を切り替えるときは、以下のように配列に入れておくとよい。