![](/img/trans.png)
[英]How do you increase the size(height) of the entry(display) box in tkinter(Python)?
[英]How do you change the width and height of a Tkinter text box in Python?
因此,我一直在使用Tkinter在Python上開發計算器。 但是,我想將按鈕隔開,而不是將它們直接相鄰放置。 我不使用root.Frame
函數。 這是我的代碼:
from Tkinter import *
master = Tk()
display = Entry(master, width=46, justify='right', bd=1, bg='#eee5de', relief=RIDGE)
master.title("Calculator | Coded by Mathieu")
# ~Class~ #
class Calculator:
def __init__(self):
self.var1 = ""
self.var2 = ""
self.result = 0
self.current = 0
self.operator = 0
def numb_butt(self, index):
if self.current is 0:
self.var1 = str(self.var1) + str(index)
display.delete(0, END)
display.insert(0, string=self.var1)
else:
self.var2 = str(self.var2) + str(index)
display.delete(0, END)
display.insert(0, string=self.var2)
def equate(self):
if self.operator is 0:
self.result = float(self.var1) + float(self.var2)
elif self.operator is 1:
self.result = float(self.var1) - float(self.var2)
elif self.operator is 2:
self.result = float(self.var1) * float(self.var2)
elif self.operator is 3:
self.result = float(self.var1) / float(self.var2)
display.delete(0, END)
display.insert(0, string=self.result)
def set_op(self, op):
self.operator = op
display.delete(0, END)
if self.current is 0:
self.current = 1
else:
self.equate()
self.var2 = ""
def clear(self):
self.__init__()
display.delete(0, END)
# ~Buttons~ #
calc = Calculator()
b0 = Button(master, text="0", command=lambda: calc.numb_butt(0), width=12, height=3, bd=2, relief=RAISED)
b1 = Button(master, text="1", command=lambda: calc.numb_butt(1), width=12, height=3, bd=2, relief=RAISED)
b2 = Button(master, text="2", command=lambda: calc.numb_butt(2), width=12, height=3, bd=2, relief=RAISED)
b3 = Button(master, text="3", command=lambda: calc.numb_butt(3), width=12, height=3, bd=2, relief=RAISED)
b4 = Button(master, text="4", command=lambda: calc.numb_butt(4), width=12, height=3, bd=2, relief=RAISED)
b5 = Button(master, text="5", command=lambda: calc.numb_butt(5), width=12, height=3, bd=2, relief=RAISED)
b6 = Button(master, text="6", command=lambda: calc.numb_butt(6), width=12, height=3, bd=2, relief=RAISED)
b7 = Button(master, text="7", command=lambda: calc.numb_butt(7), width=12, height=3, bd=2, relief=RAISED)
b8 = Button(master, text="8", command=lambda: calc.numb_butt(8), width=12, height=3, bd=2, relief=RAISED)
b9 = Button(master, text="9", command=lambda: calc.numb_butt(9), width=12, height=3, bd=2, relief=RAISED)
b_dot = Button(master, text=".", command=lambda: calc.numb_butt("."), width=12, height=3, bd=2, relief=RAISED)
plus = Button(master, text="+", command=lambda: calc.set_op(0), width=5, height=3, bd=2, relief=RAISED)
minus = Button(master, text="-", command=lambda: calc.set_op(1), width=5, height=3, bd=2, relief=RAISED)
times = Button(master, text="*", command=lambda: calc.set_op(2), width=5, height=3, bd=2, relief=RAISED)
divide = Button(master, text="/", command=lambda: calc.set_op(3), width=5, height=3, bd=2, relief=RAISED)
equals = Button(master, text="=", command=calc.equate, width=5, bd=2, relief=RAISED)
clear = Button(master, text="C", command=calc.clear, width=12, height=3, bd=2, relief=RAISED)
# ~Positioning~ #
display.place(x=0, y=2)
b7.grid(row=2, column=0)
b8.grid(row=2, column=1)
b9.grid(row=2, column=2)
b4.grid(row=3, column=0)
b5.grid(row=3, column=1)
b6.grid(row=3, column=2)
b1.grid(row=4, column=0)
b2.grid(row=4, column=1)
b3.grid(row=4, column=2)
b0.grid(row=5, column=0)
b_dot.grid(row=5, column=1)
clear.grid(row=5, column=2)
plus.grid(row=2, column=3)
minus.grid(row=3, column=3)
times.grid(row=4, column=3)
divide.grid(row=5, column=3)
equals.grid(row=1, column=3)
master.mainloop()
對於您的問題,有一些選擇。
最明顯和最簡單的解決方案是使用padx
和pady
配置選項。
對於每行,只需添加填充即可放置小部件:
拿着它:
b7.grid(row=2, column=0)
並添加padx,pady:
b7.grid(row=2, column=0, padx = 5, pady = 5)
另一個選擇是使用place方法將每個按鈕專門放置在彼此分開幾個像素空間的位置,以提供所需的空間。 但是,這不是首選方法,因為它將使將來的代碼維護變得更加困難。
代替.grid()
使用.place()
並使用參數x
和y
:此選項的維護.place()
大得多,應避免使用。
您可以將.pack()
與padding配置一起使用,但是我認為最好在此處使用.grid()
,並且應該堅持這樣做。
使用以下命令獲得相同的布局,但使用填充。
注意:我已將您申請的號碼更改為使用網格而不是放置。 您需要做的就是定義列跨度,這樣它就不會更改其他小部件的位置。
display.grid(row = 1, column = 0, columnspan = 3, padx = 5, pady = 5)
b7.grid(row=2, column=0, padx = 5, pady = 5)
b8.grid(row=2, column=1, padx = 5, pady = 5)
b9.grid(row=2, column=2, padx = 5, pady = 5)
b4.grid(row=3, column=0, padx = 5, pady = 5)
b5.grid(row=3, column=1, padx = 5, pady = 5)
b6.grid(row=3, column=2, padx = 5, pady = 5)
b1.grid(row=4, column=0, padx = 5, pady = 5)
b2.grid(row=4, column=1, padx = 5, pady = 5)
b3.grid(row=4, column=2, padx = 5, pady = 5)
b0.grid(row=5, column=0, padx = 5, pady = 5)
b_dot.grid(row=5, column=1, padx = 5, pady = 5)
clear.grid(row=5, column=2, padx = 5, pady = 5)
plus.grid(row=2, column=3, padx = 5, pady = 5)
minus.grid(row=3, column=3, padx = 5, pady = 5)
times.grid(row=4, column=3, padx = 5, pady = 5)
divide.grid(row=5, column=3, padx = 5, pady = 5)
equals.grid(row=1, column=3, padx = 5, pady = 5)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.