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

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

長いコードになります。

  1. # -*- coding: utf-8 -*-
  2. import tkinter as tk
  3. import tkinter.ttk as ttk
  4. import sqlite3
  5. import tkinter.messagebox as msg
  6. root = tk.Tk()
  7. root.resizable(0,0)
  8. root.title(“基本情報入力”)
  9. root.geometry(“640×640”)
  10. status = tk.Label(root, text=“from : zono屋・・・ ”,borderwidth=2,relief=“ridge”)
  11. status.pack(side=tk.BOTTOM, fill=tk.X)
  12. # 1th < scrollbar > 
  13. frame1 = tk.LabelFrame(root,bd=1,relief=“sunken”,text=” name “,height=600,foreground=“purple”)
  14. frame1.pack(side=“left”,anchor=“nw”,fill=“x”,padx=8,pady=2)
  15. scrollbar = tk.Scrollbar(frame1,bd=5,relief=“sunken”)
  16. scrollbar.pack(side=“right”,fill=“y”)
  17. # 2th ” menu ” < 利用者ID > 
  18. frame2 = tk.LabelFrame(root,bd=1,relief=“sunken”,text=” manu “,width=600,height=100,foreground=“purple”)
  19. frame2.pack(side=“top”,anchor=“n”,fill=“x”,ipady=5,padx=2)
  20. label1 = tk.Label(frame2,text=“利用者 ID”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  21. label1.grid(row=1,column=1,padx=2,pady=2)
  22. entry1 = tk.Entry(frame2,text=“”,width=15,bg=“light grey”)
  23. entry1.grid(row=1,column=2,padx=2,ipady=5)
  24. # 3th ” start date of use ” < 西暦年 > < 月 > < 日 >
  25. frame3 = tk.LabelFrame(root,bd=1,relief=“sunken”,text=” start date of use “,width=600,height=100,foreground=“purple”)
  26. frame3.pack(side=“top”,fill=“x”,pady=5,padx=2)
  27. label9 = tk.Label(frame3,text=“確認表示欄”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  28. label9.grid(row=2,column=1,padx=2,pady=5)
  29. entry18= tk.Entry(frame3,text=“”,width=10,bg=“light grey”)
  30. entry18.grid(row=2,column=2,padx=2,ipady=5)
  31. label18= tk.Label(frame3,text=“年”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  32. label18.grid(row=2,column=3,padx=2,pady=5)
  33. entry19= tk.Entry(frame3,text=“”,width=10,bg=“light grey”)
  34. entry19.grid(row=2,column=4,padx=2,ipady=5)
  35. label19= tk.Label(frame3,text=“月”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  36. label19.grid(row=2,column=5,padx=2,pady=5)
  37. entry20= tk.Entry(frame3,text=“”,width=10,bg=“light grey”)
  38. entry20.grid(row=2,column=6,padx=2,ipady=5)
  39. label20= tk.Label(frame3,text=“日”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  40. label20.grid(row=2,column=7,padx=2,pady=5)
  41. label10 = tk.Label(frame3,text=“利用開始日”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  42. label10.grid(row=1,column=1,ipadx=10,pady=5)
  43. val = tk.StringVar()
  44. box2 = ttk.Combobox(frame3, values = (” “,“2015”,“2016”,“2017”,“2018”,“2019”,“2020”,“2021”), textvariable=val, state=‘readonly’,width=7,height=2)
  45. box2.current(0)
  46. box2.grid(row=1,column=2,padx=2,ipady=5)
  47. label12= tk.Label(frame3,text=“年”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  48. label12.grid(row=1,column=3,padx=2,pady=5)
  49. val = tk.StringVar()
  50. 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)
  51. box3.current(0)
  52. box3.grid(row=1,column=4,padx=2,ipady=5)
  53. label14= tk.Label(frame3,text=“月”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  54. label14.grid(row=1,column=5,padx=2,pady=5)
  55. val = tk.StringVar()
  56. 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)
  57. box4.current(0)
  58. box4.grid(row=1,column=6,padx=2,ipady=5)
  59. label16= tk.Label(frame3,text=“日”,width=7,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  60. label16.grid(row=1,column=7,padx=2,pady=5)
  61. # 4th “name Confirm input” < 姓 > < 名 > < セ イ > < メ イ >
  62. frame4 = tk.LabelFrame(root,bd=1,relief=“sunken”,text=” name Confirm input “,width=600,height=200,foreground=“purple”)
  63. frame4.pack(side=“top”,fill=“x”,pady=5,padx=2)
  64. label3 = tk.Label(frame4,text=” 姓 (*)”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  65. label3.grid(row=2,column=1,padx=2,pady=5)
  66. entry2 = tk.Entry(frame4,width=15,text=“”)
  67. entry2.grid(row=2,column=2,padx=2,ipady=5)
  68. label4 = tk.Label(frame4,text=” 名 (*)”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  69. label4.grid(row=2,column=3,padx=2,pady=5)
  70. entry3 = tk.Entry(frame4,text=“”,width=15)
  71. entry3.grid(row=2,column=4,padx=2,ipady=5)
  72. label5 = tk.Label(frame4,text=” セイ (*)”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  73. label5.grid(row=3,column=1,padx=2,pady=5)
  74. entry4 = tk.Entry(frame4,text=“”,width=15)
  75. entry4.grid(row=3,column=2,padx=2,ipady=5)
  76. label6 = tk.Label(frame4,text=” メイ (*)”,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  77. label6.grid(row=3,column=3,padx=2,pady=5)
  78. entry5 = tk.Entry(frame4,text=“”,width=15)
  79. entry5.grid(row=3,column=4,padx=2,ipady=5)
  80. # 5th ” other ” < 市町村名 > < 支給量 > < 工賃単価 >
  81. frame5 = tk.LabelFrame(root,bd=1,relief=“sunken”,text=” other “,width=600,height=100,foreground=“purple”)
  82. frame5.pack(side=“top”,fill=“x”,pady=5,padx=2)
  83. label17 = tk.Label(frame5,text=” 市町村名 “,width=10,height=2,bd=1,relief=“sunken”,bg=“ghost white”)
  84. label17.grid(row=1,column=1,padx=2,pady=5)
  85. val = tk.StringVar()
  86. box1 = ttk.Combobox(frame5,values = (” “,“鹿児島市”,“熊本市,”八代市“,”さつま川内市“,”水俣市“), textvariable=val, state=’readonly’,width=12,height=2)
  87. box1.current(0)
  88. box1.grid(row=1,column=2,padx=5,ipady=5)
  89. label17 = tk.Label(frame5,text=”確認表示欄 “,width=10,height=2,bd=1,relief=”sunken“,bg=”ghost white“)
  90. label17.grid(row=1,column=3,padx=2,pady=5)
  91. entry14 = tk.Entry(frame5,text=””,width=15,bg=”light grey“)
  92. entry14.grid(row=1,column=4,padx=2,ipady=5)
  93. label17 = tk.Label(frame5,text=” 支給量 “,width=10,height=2,bd=1,relief=”sunken“,bg=”ghost white“)
  94. label17.grid(row=2,column=1,padx=2,pady=5)
  95. entry8 = tk.Entry(frame5,text=””,width=15)
  96. entry8.grid(row=2,column=2,padx=2,ipady=5)
  97. label17 = tk.Label(frame5,text=” 工賃単価 “,width=10,height=2,bd=1,relief=”sunken“,bg=”ghost white“)
  98. label17.grid(row=3,column=1,padx=2,pady=5)
  99. entry9 = tk.Entry(frame5,text=””,width=15)
  100. entry9.grid(row=3,column=2,padx=2,ipady=5)
  101. # 6th “<追加>・<更新>
  102. frame7 = tk.LabelFrame(root,bd=1,relief=”sunken“,text=” edit “,width=600,height=100,foreground=”purple“)
  103. frame7.pack(side=”top“,fill=”x“,pady=5,padx=5)
  104. button2 = tk.Button(frame7,text=”追 加“,width=10,height=2,bg=”lightgray“)
  105. button2.pack(side=”left“,padx=2,pady=5)
  106. button3 = tk.Button(frame7,text=”更 新“,width=10,height=2,bg=”lightgray“)
  107. button3.pack(side=”left“,padx=2,pady=5)
  108. # 7th “<listbox>
  109. mylist = tk.Listbox(frame1,yscrollcommand = scrollbar.set,height=600)
  110. mylist.insert(0) # リストボックス内の項目をクリックする #
  111. mylist.pack(side=”left“,fill=”both“)
  112. scrollbar.config(command = mylist.yview)
  113. # 8th “ end ” 【終 了】 
  114. frame8 = tk.LabelFrame(root,bd=1,relief=”sunken“,text=” end “,width=600,height=100,foreground=”purple“)
  115. frame8.pack(side=”top“,fill=”x“,pady=5,padx=5)
  116. label18 = tk.Label(frame8,text=” 項目 (*) は 必須 !“,width=20,height=2,bd=1)
  117. label18.pack(side=”left“,padx=5,pady=5)
  118. button4 = tk.Button(frame8,text=”終 了“,width=10,height=2,bg=”lightgray“)
  119. button4.pack(side=”right“,padx=5,pady=5)
  120. root.mainloop()

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