Pythonのtkinterという便利そうなものがある。
しかし、制約があったり使い方がいまいちピンとこない人
タブの実装して起きましたから参考にしてください
環境は、python3のMacOSです。
※python2.7と3で異なります。
実際のユーザフォーム
ソースコード
sample-tkinter.py
# -*- coding: utf-8 -*-
import tkinter as tk
import tkinter.ttk as ttk
# 登録ボタンがクリックされた時にデータをDBに登録するコールバック関数
def create_sql():
# 日付の読み取り
acc_data = entry1.get()
print(acc_data)
# 内訳の読み取り
item_code = entry2.get()
# 金額の読み取り
amount = entry3.get()
# rootフレームの設定
root = tk.Tk()
root.title("家計簿アプリ")
root.geometry("300x280")
# ノートブック
nb = ttk.Notebook(width=200, height=200)
# タブの作成
tab1 = tk.Frame(nb)
tab2 = tk.Frame(nb)
tab3 = tk.Frame(nb)
nb.add(tab1, text='入力', padding=3)
nb.add(tab2, text='表示', padding=3)
nb.add(tab3, text='その他', padding=3)
nb.pack(expand=1, fill='both')
## タブ1
# 入力画面ラベルの設定
label1_1 = tk.Label(tab1,text="【入力画面】",font=("",16),height=2)
label1_1.pack(fill="x")
# 日付のラベルとエントリーの設定
frame1_1 = tk.Frame(tab1,pady=10)
frame1_1.pack()
label1_2 = tk.Label(frame1_1,font=("",14),text="日付")
label1_2.pack(side="left")
entry1_1 = tk.Entry(frame1_1,font=("",14),justify="center",width=15)
entry1_1.pack(side="left")
# 内訳のラベルとエントリーの設定
frame1_2 = tk.Frame(tab1,pady=10)
frame1_2.pack()
label1_3 = tk.Label(frame1_2,font=("",14),text="内訳")
label1_3.pack(side="left")
entry1_2 = tk.Entry(frame1_2,font=("",14),justify="center",width=15)
entry1_2.pack(side="left")
# 金額のラベルとエントリーの設定
frame1_3 = tk.Frame(tab1,pady=10)
frame1_3.pack()
label1_4 = tk.Label(frame1_3,font=("",14),text="金額")
label1_4.pack(side="left")
entry1_3 = tk.Entry(frame1_3,font=("",14),justify="center",width=15)
entry1_3.pack(side="left")
# 登録ボタンの設定
button1_4 = tk.Button(tab1,text="登録",font=("",14),width=5,bg="gray",command=create_sql)
button1_4.pack()
## タブ2
# 入力画面ラベルの設定
label2_1 = tk.Label(tab2,text="【表示画面】",font=("",16),height=2)
label2_1.pack(fill="x")
# フレーム2_1の作成
frame2_1 = tk.Frame(tab2, pady=10)
frame2_1.pack()
# リスト2_1の作成
listb2_1 = tk.Listbox(frame2_1, width=20, height=7)
listb2_1.pack()
# スクロール2_1の作成
scroll2_1 = tk.Scrollbar(frame2_1, orient = 'v', command = listb2_1.yview)
# スクロールの設定
listb2_1.configure(yscrollcommand = scroll2_1.set)
# gridで配置
listb2_1.grid(row = 1, column = 0, sticky = 'ns')
scroll2_1.grid(row = 1, column = 1, sticky = 'ns')
# メインループ
root.mainloop()