[Python] ボタンを電卓のように配列してみる
こんにちは、@yasuです。
ボタンを電卓のように配列してみたいと思います。電卓機能は実装していません。
1. 初期版
電卓のボタンの配列をgridで実現する。
コード
from tkinter import *
root = Tk()
root.title("電卓っぽいもの")
#
# 電卓のボタンの配列をgridで実現する。
#
# [0,0] [1,0] [2,0] [3,0]
# [0,1] [1,1] [2,1] [3,1]
# [0,2] [1,2] [2,2] [3,2]
#
def Test1():
btn_f16 = Button(root, text="F16")
btn_f17 = Button(root, text="F17")
btn_f18 = Button(root, text="F18")
btn_f19 = Button(root, text="F19")
btn_f16.grid(row=0,column=0)
btn_f17.grid(row=0,column=1)
btn_f18.grid(row=0,column=2)
btn_f19.grid(row=0,column=3)
btn_clear = Button(root, text="cler")
btn_equal = Button(root, text="=")
btn_div = Button(root, text="/")
btn_mul = Button(root, text="*")
btn_clear.grid(row=1,column=0)
btn_equal.grid(row=1,column=1)
btn_div.grid(row=1,column=2)
btn_mul.grid(row=1,column=3)
btn_7 = Button(root, text="7")
btn_8 = Button(root, text="8")
btn_9 = Button(root, text="9")
btn_sub = Button(root, text="-")
btn_7.grid(row=2,column=0)
btn_8.grid(row=2,column=1)
btn_9.grid(row=2,column=2)
btn_sub.grid(row=2,column=3)
btn_4 = Button(root, text="4")
btn_5 = Button(root, text="5")
btn_6 = Button(root, text="6")
btn_add = Button(root, text="+")
btn_4.grid(row=3,column=0)
btn_5.grid(row=3,column=1)
btn_6.grid(row=3,column=2)
btn_add.grid(row=3,column=3)
btn_1 = Button(root, text="1")
btn_2 = Button(root, text="2")
btn_3 = Button(root, text="3")
btn_enter = Button(root, text="enter")
btn_1.grid(row=4,column=0)
btn_2.grid(row=4,column=1)
btn_3.grid(row=4,column=2)
btn_enter.grid(row=4,column=3,rowspan=2)
btn_0 = Button(root, text="0")
btn_point = Button(root, text=".")
btn_0.grid(row=5,column=0,columnspan=2)
btn_point.grid(row=5,column=2)
Test1()
root.mainloop()
実行結果
2. 途中版
stickyを用いて、配列にボタンの大きさをそろえる。
コード
from tkinter import *
root = Tk()
root.title("電卓っぽいもの")
#
# stickyを用いて、配列にボタンの大きさをそろえる。
#
def Test2():
btn_f16 = Button(root, text="F16")
btn_f17 = Button(root, text="F17")
btn_f18 = Button(root, text="F18")
btn_f19 = Button(root, text="F19")
btn_f16.grid(row=0,column=0,sticky=N+E+W+S)
btn_f17.grid(row=0,column=1,sticky=N+E+W+S)
btn_f18.grid(row=0,column=2,sticky=N+E+W+S)
btn_f19.grid(row=0,column=3,sticky=N+E+W+S)
btn_clear = Button(root, text="cler")
btn_equal = Button(root, text="=")
btn_div = Button(root, text="/")
btn_mul = Button(root, text="*")
btn_clear.grid(row=1,column=0,sticky=N+E+W+S)
btn_equal.grid(row=1,column=1,sticky=N+E+W+S)
btn_div.grid(row=1,column=2,sticky=N+E+W+S)
btn_mul.grid(row=1,column=3,sticky=N+E+W+S)
btn_7 = Button(root, text="7")
btn_8 = Button(root, text="8")
btn_9 = Button(root, text="9")
btn_sub = Button(root, text="-")
btn_7.grid(row=2,column=0,sticky=N+E+W+S)
btn_8.grid(row=2,column=1,sticky=N+E+W+S)
btn_9.grid(row=2,column=2,sticky=N+E+W+S)
btn_sub.grid(row=2,column=3,sticky=N+E+W+S)
btn_4 = Button(root, text="4")
btn_5 = Button(root, text="5")
btn_6 = Button(root, text="6")
btn_add = Button(root, text="+")
btn_4.grid(row=3,column=0,sticky=N+E+W+S)
btn_5.grid(row=3,column=1,sticky=N+E+W+S)
btn_6.grid(row=3,column=2,sticky=N+E+W+S)
btn_add.grid(row=3,column=3,sticky=N+E+W+S)
btn_1 = Button(root, text="1")
btn_2 = Button(root, text="2")
btn_3 = Button(root, text="3")
btn_enter = Button(root, text="enter")
btn_1.grid(row=4,column=0,sticky=N+E+W+S)
btn_2.grid(row=4,column=1,sticky=N+E+W+S)
btn_3.grid(row=4,column=2,sticky=N+E+W+S)
btn_enter.grid(row=4,column=3,rowspan=2,sticky=N+E+W+S)
btn_0 = Button(root, text="0")
btn_point = Button(root, text=".")
btn_0.grid(row=5,column=0,columnspan=2,sticky=N+E+W+S)
btn_point.grid(row=5,column=2,sticky=N+E+W+S)
Test2()
root.mainloop()
実行結果
3. 完成版
padx,padyを用いて、ボタン間の隙間を広げる。
コード
from tkinter import *
root = Tk()
root.title("電卓っぽいもの")
#
# padx,padyを用いて、ボタン間の隙間を広げる。
#
def Test3():
btn_f16 = Button(root, text="F16",width=5,height=2)
btn_f17 = Button(root, text="F17",width=5,height=2)
btn_f18 = Button(root, text="F18",width=5,height=2)
btn_f19 = Button(root, text="F19",width=5,height=2)
btn_f16.grid(row=0,column=0,sticky=N+E+W+S,padx=3,pady=3)
btn_f17.grid(row=0,column=1,sticky=N+E+W+S,padx=3,pady=3)
btn_f18.grid(row=0,column=2,sticky=N+E+W+S,padx=3,pady=3)
btn_f19.grid(row=0,column=3,sticky=N+E+W+S,padx=3,pady=3)
btn_clear = Button(root, text="cler",width=5,height=2)
btn_equal = Button(root, text="=",width=5,height=2)
btn_div = Button(root, text="/",width=5,height=2)
btn_mul = Button(root, text="*",width=5,height=2)
btn_clear.grid(row=1,column=0,sticky=N+E+W+S,padx=3,pady=3)
btn_equal.grid(row=1,column=1,sticky=N+E+W+S,padx=3,pady=3)
btn_div.grid(row=1,column=2,sticky=N+E+W+S,padx=3,pady=3)
btn_mul.grid(row=1,column=3,sticky=N+E+W+S,padx=3,pady=3)
btn_7 = Button(root, text="7",width=5,height=2)
btn_8 = Button(root, text="8",width=5,height=2)
btn_9 = Button(root, text="9",width=5,height=2)
btn_sub = Button(root, text="-",width=5,height=2)
btn_7.grid(row=2,column=0,sticky=N+E+W+S,padx=3,pady=3)
btn_8.grid(row=2,column=1,sticky=N+E+W+S,padx=3,pady=3)
btn_9.grid(row=2,column=2,sticky=N+E+W+S,padx=3,pady=3)
btn_sub.grid(row=2,column=3,sticky=N+E+W+S,padx=3,pady=3)
btn_4 = Button(root, text="4",width=5,height=2)
btn_5 = Button(root, text="5",width=5,height=2)
btn_6 = Button(root, text="6",width=5,height=2)
btn_add = Button(root, text="+",width=5,height=2)
btn_4.grid(row=3,column=0,sticky=N+E+W+S,padx=3,pady=3)
btn_5.grid(row=3,column=1,sticky=N+E+W+S,padx=3,pady=3)
btn_6.grid(row=3,column=2,sticky=N+E+W+S,padx=3,pady=3)
btn_add.grid(row=3,column=3,sticky=N+E+W+S,padx=3,pady=3)
btn_1 = Button(root, text="1",width=5,height=2)
btn_2 = Button(root, text="2",width=5,height=2)
btn_3 = Button(root, text="3",width=5,height=2)
btn_enter = Button(root, text="enter",width=5,height=2)
btn_1.grid(row=4,column=0,sticky=N+E+W+S,padx=3,pady=3)
btn_2.grid(row=4,column=1,sticky=N+E+W+S,padx=3,pady=3)
btn_3.grid(row=4,column=2,sticky=N+E+W+S,padx=3,pady=3)
btn_enter.grid(row=4,column=3,rowspan=2,sticky=N+E+W+S,padx=3,pady=3)
btn_0 = Button(root, text="0",width=5,height=2)
btn_point = Button(root, text=".",width=5,height=2)
btn_0.grid(row=5,column=0,columnspan=2,sticky=N+E+W+S,padx=3,pady=3)
btn_point.grid(row=5,column=2,sticky=N+E+W+S,padx=3,pady=3)
Test3()
root.mainloop()
@yasu transfered 0.5 KRWP to @krwp.burn. voting percent : 6.71%, voting power : 60.36%, steem power : 1929484.10, STU KRW : 1200.
@yasu staking status : 250 KRWP
@yasu limit for KRWP voting service : 0.5 KRWP (rate : 0.002)
What you sent : 0.5 KRWP [47391557 - 697ebcd03bd64ac2703f9a72a34704a3fd5be8ae]