zono note

zono note

日々の学び、気付きを大切に綴りたい

連載3:pythonで利用者情報入力を作る

『tkinterでform作成』
tkinterでユーザフォームを作成します。

長いコードになります。

# -*- coding: utf-8 -*-

import tkinter as tk
import tkinter.ttk as ttk
import sqlite3
import tkinter.messagebox as msg

root = tk.Tk()
root.resizable(0,0)
root.title("基本情報入力")
root.geometry("640x640")

status = tk.Label(root, text="from : zono屋・・・ ",borderwidth=2,relief="ridge")
status.pack(side=tk.BOTTOM, fill=tk.X)

#	1th < scrollbar > 

frame1 = tk.LabelFrame(root,bd=1,relief="sunken",text=" name ",height=600,foreground="purple")
frame1.pack(side="left",anchor="nw",fill="x",padx=8,pady=2)
scrollbar = tk.Scrollbar(frame1,bd=5,relief="sunken")
scrollbar.pack(side="right",fill="y")

#	2th " menu "  < 利用者ID > 

frame2 = tk.LabelFrame(root,bd=1,relief="sunken",text=" manu ",width=600,height=100,foreground="purple")
frame2.pack(side="top",anchor="n",fill="x",ipady=5,padx=2)
label1 = tk.Label(frame2,text="利用者 ID",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label1.grid(row=1,column=1,padx=2,pady=2)
entry1 = tk.Entry(frame2,text="",width=15,bg="light grey")
entry1.grid(row=1,column=2,padx=2,ipady=5)

#	3th " start date of use "  < 西暦年 > <  月  > <  日  > 

frame3 = tk.LabelFrame(root,bd=1,relief="sunken",text=" start date of use ",width=600,height=100,foreground="purple")
frame3.pack(side="top",fill="x",pady=5,padx=2)
label9 = tk.Label(frame3,text="確認表示欄",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label9.grid(row=2,column=1,padx=2,pady=5)
entry18= tk.Entry(frame3,text="",width=10,bg="light grey")
entry18.grid(row=2,column=2,padx=2,ipady=5)
label18= tk.Label(frame3,text="年",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label18.grid(row=2,column=3,padx=2,pady=5)
entry19= tk.Entry(frame3,text="",width=10,bg="light grey")
entry19.grid(row=2,column=4,padx=2,ipady=5)
label19= tk.Label(frame3,text="月",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label19.grid(row=2,column=5,padx=2,pady=5)
entry20= tk.Entry(frame3,text="",width=10,bg="light grey")
entry20.grid(row=2,column=6,padx=2,ipady=5)
label20= tk.Label(frame3,text="日",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label20.grid(row=2,column=7,padx=2,pady=5)
label10 = tk.Label(frame3,text="利用開始日",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label10.grid(row=1,column=1,ipadx=10,pady=5)

val = tk.StringVar()
box2 = ttk.Combobox(frame3, values = ("  ","2015","2016","2017","2018","2019","2020","2021"), textvariable=val, state='readonly',width=7,height=2)
box2.current(0)
box2.grid(row=1,column=2,padx=2,ipady=5)
label12= tk.Label(frame3,text="年",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label12.grid(row=1,column=3,padx=2,pady=5)

val = tk.StringVar()
box3 = ttk.Combobox(frame3, values = ("  ","01","02","03","04","05","06","07","08","09","10","11","12"), textvariable=val, state='readonly',width=7,height=2)
box3.current(0) 
box3.grid(row=1,column=4,padx=2,ipady=5)
label14= tk.Label(frame3,text="月",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label14.grid(row=1,column=5,padx=2,pady=5)

val = tk.StringVar()
box4 = ttk.Combobox(frame3, values = ("  ","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"), textvariable=val, state='readonly',width=7,height=2)
box4.current(0)
box4.grid(row=1,column=6,padx=2,ipady=5)
label16= tk.Label(frame3,text="日",width=7,height=2,bd=1,relief="sunken",bg="ghost white")
label16.grid(row=1,column=7,padx=2,pady=5)

#	4th "name Confirm input"  <  姓  >  <  名  > < セ イ > < メ イ > 

frame4 = tk.LabelFrame(root,bd=1,relief="sunken",text=" name Confirm input ",width=600,height=200,foreground="purple")
frame4.pack(side="top",fill="x",pady=5,padx=2)
label3 = tk.Label(frame4,text=" 姓 (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label3.grid(row=2,column=1,padx=2,pady=5)
entry2 = tk.Entry(frame4,width=15,text="")
entry2.grid(row=2,column=2,padx=2,ipady=5)
label4 = tk.Label(frame4,text=" 名 (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label4.grid(row=2,column=3,padx=2,pady=5)
entry3 = tk.Entry(frame4,text="",width=15)
entry3.grid(row=2,column=4,padx=2,ipady=5)
label5 = tk.Label(frame4,text=" セイ (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label5.grid(row=3,column=1,padx=2,pady=5)
entry4 = tk.Entry(frame4,text="",width=15)
entry4.grid(row=3,column=2,padx=2,ipady=5)
label6 = tk.Label(frame4,text=" メイ (*)",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label6.grid(row=3,column=3,padx=2,pady=5)
entry5 = tk.Entry(frame4,text="",width=15)
entry5.grid(row=3,column=4,padx=2,ipady=5)

#	5th " other "  < 市町村名 > < 支給量 > < 工賃単価 >

frame5 = tk.LabelFrame(root,bd=1,relief="sunken",text=" other ",width=600,height=100,foreground="purple")
frame5.pack(side="top",fill="x",pady=5,padx=2)
label17 = tk.Label(frame5,text=" 市町村名 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label17.grid(row=1,column=1,padx=2,pady=5)

val = tk.StringVar()
box1 = ttk.Combobox(frame5,values = ("  ","鹿児島市","熊本市,"八代市","さつま川内市","水俣市"), textvariable=val, state='readonly',width=12,height=2)
box1.current(0)
box1.grid(row=1,column=2,padx=5,ipady=5)
label17 = tk.Label(frame5,text="確認表示欄 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label17.grid(row=1,column=3,padx=2,pady=5)
entry14 = tk.Entry(frame5,text="",width=15,bg="light grey")
entry14.grid(row=1,column=4,padx=2,ipady=5)
label17 = tk.Label(frame5,text=" 支給量 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label17.grid(row=2,column=1,padx=2,pady=5)
entry8 = tk.Entry(frame5,text="",width=15)
entry8.grid(row=2,column=2,padx=2,ipady=5)
label17 = tk.Label(frame5,text=" 工賃単価 ",width=10,height=2,bd=1,relief="sunken",bg="ghost white")
label17.grid(row=3,column=1,padx=2,pady=5)
entry9 = tk.Entry(frame5,text="",width=15)
entry9.grid(row=3,column=2,padx=2,ipady=5)

#  6th "<追加>・<更新>"

frame7 = tk.LabelFrame(root,bd=1,relief="sunken",text=" edit ",width=600,height=100,foreground="purple")
frame7.pack(side="top",fill="x",pady=5,padx=5)
button2 = tk.Button(frame7,text="追 加",width=10,height=2,bg="lightgray")	
button2.pack(side="left",padx=2,pady=5)
button3 = tk.Button(frame7,text="更 新",width=10,height=2,bg="lightgray")	
button3.pack(side="left",padx=2,pady=5)

#  7th "<listbox>"

mylist = tk.Listbox(frame1,yscrollcommand = scrollbar.set,height=600)
mylist.insert(0)										# リストボックス内の項目をクリックする #
mylist.pack(side="left",fill="both")
scrollbar.config(command = mylist.yview)

#	8th " end " 	【終 了】 	

frame8 = tk.LabelFrame(root,bd=1,relief="sunken",text=" end ",width=600,height=100,foreground="purple")
frame8.pack(side="top",fill="x",pady=5,padx=5)
label18 = tk.Label(frame8,text=" 項目 (*) は 必須 !",width=20,height=2,bd=1)
label18.pack(side="left",padx=5,pady=5)
button4 = tk.Button(frame8,text="終 了",width=10,height=2,bg="lightgray")	
button4.pack(side="right",padx=5,pady=5)

root.mainloop()

出来上がりは
tkinterで作成した情報入力画面