LoginSignup
10
13

More than 5 years have passed since last update.

Python3のtkinterのタブの実装[sample]

Last updated at Posted at 2018-04-07

Pythonのtkinterという便利そうなものがある。
しかし、制約があったり使い方がいまいちピンとこない人
タブの実装して起きましたから参考にしてください
環境は、python3のMacOSです。
※python2.7と3で異なります。

実際のユーザフォーム

入力フォーム
スクリーンショット 2018-04-09 20.51.41.png

表示フォーム
スクリーンショット 2018-04-09 20.51.57.png

ソースコード

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()
10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13