Форум сайта python.su
0
Добрый день!
Написал графический калькулятор для своих нужд, но, к сожалению, не могу отрегулировать высоту моих кнопок. Чтобы сэкономить время, место и строки кода создал список, в котором написал название моих кнопок и через цикл for создал кнопки. Вроде бы все замечательно, но если я задам высоту кнопкам (height = 5), то программа выдает ошибку :
Traceback (most recent call last):
File “C:\Users\boris\Desktop\Calc.py”, line 64, in <module>
ttk.Button(root, text=i, command = cmd, width = 10, height = 5 ).grid(row=r, column = c)
File “E:\Python35\lib\tkinter\ttk.py”, line 614, in __init__
Widget.__init__(self, master, “ttk::button”, kw)
File “E:\Python35\lib\tkinter\ttk.py”, line 559, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File “E:\Python35\lib\tkinter\__init__.py”, line 2293, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown option “-height”
Место где я задаю высоту кнопкам в коде я выделил жирным шрифтом, а также написал комментарий, что бы Вам было легче его найти.
Если я оставлю код без изменения высоты кнопок, то программа работает, как часы, хотелось бы чтоб в программе можно было поменять высоту кнопок. Помогите, пожалуйста в решении данной проблемы.
Программа:
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys
root = Tk()
root.title(“Calculator”)
#calculator logic
def calc(key):
global memory
if key == “=”:
#exclude writing letters
str1 = “-+0123456789.*/”
if calc_entry.get() not in str1:
calc_entry.insert(END, “First symbol is not number!”)
messagebox.showerror(“Error!”, “You did not enter the number!”)
#score
try:
result = eval(calc_entry.get())
calc_entry.insert(END, “=” + str(result))
except:
calc_entry.insert(END, “Error!”)
messagebox.showerror(“Error!”, “Check the correctness of data”)
#clear field
elif key == “C”:
calc_entry.delete(0, END)
#change -+
elif key == “-/+”:
if “=” in calc_entry.get():
calc_entry.delete(0, END)
try:
if calc_entry.get() == “-”:
calc_entry.delete(0)
else:
calc_entry.insert(0, “-”)
except IndexError:
pass
elif key == “Pi”:
calc_entry.insert(END, math.pi)
elif key == “Exit”:
root.after(1,root.destroy)
sys.exit
else:
if “=” in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
#buttons
bttn_list = [
“7”, “8”, “9”, “+”, “-”,
“4”, “5”, “6”, “*”, “/”,
“1”, “2”, “3”, “-/+”, “=”,
“C”, “0”, “.”, “Pi”, “Exit”
]
r = 1
c = 0
for i in bttn_list:
rel = “”
cmd=lambda x=i: calc(x)
ttk.Button(root, text=i, command = cmd, width = 10, height = 5 #вот тут возникает ошибка ).grid(row=r, column = c)
c += 1
if c > 4:
c = 0
r += 1
calc_entry = Entry(root, width = 33)
calc_entry.grid(row=0, column=0, columnspan=5)
root.mainloop()
Отредактировано Bob1 (Дек. 27, 2017 14:41:58)
Офлайн
73
может тут cmd=lambda x=i: calc(x)?
наверно так должно быть cmd = lambda x : calc(x). без тегов код не понятен и трудно его читать. редактируй его выдели весь код в сообщении а затем вверху окна слева от смайла выбери Python
Офлайн
0
marvellikСпасибо буду знать
может тут cmd=lambda x=i: calc(x)?наверно так должно быть cmd = lambda x : calc(x). без тегов код не понятен и трудно его читать. редактируй его выдели весь код в сообщении а затем вверху окна слева от смайла выбери Python
Офлайн