from tkinter import *
class Main(Frame):
def __init__(self, root):
super(Main, self).__init__(root)
self.build()
def build(self):
self.formula = "0"
self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF")
self.lbl.place(x=11, y=50)
btns = [
"C", "DEL", "*", "=",
"1", "2", "3", "/",
"4", "5", "6", "+",
"7", "8", "9", "-",
"(", "0", ")", "X^2"
]
x = 10
y = 140
for bt in btns:
com = lambda x=bt: self.logicalc(x)
Button(text=bt, bg="#FFF",
font=("Times New Roman", 15),
command=com).place(x=x, y=y,
width=115,
height=79)
x += 117
if x > 400:
x = 10
y += 81
def logicalc(self, operation):
if operation == "C":
self.formula = ""
elif operation == "DEL":
self.formula = self.formula[0:-1]
elif operation == "X^2":
self.formula = str((eval(self.formula))**2)
elif operation == "=":
self.formula = str(eval(self.formula))
else:
if self.formula == "0":
self.formula = ""
self.formula += operation
self.update()
def update(self):
if self.formula == "":
self.formula = "0"
self.lbl.configure(text=self.formula)
if __name__ == '__main__':
root = Tk()
root["bg"] = "#000"
root.geometry("485x550+200+200")
root.title("Калькулятор")
root.resizable(False, False)
app = Main(root)
app.pack()
root.mainloop()
Объяснение:
1.Создаём окно 485 на 550. Размеры не важны, мне понравились такие. Так же указываем, что окно не будет изменяться.
class Main(Frame):
def __init__(self, root):
super(Main, self).__init__(root)
self.build()
def build(self):
pass
def logicalc(self, operation):
pass
def update():
pass
if __name__ == '__main__':
root = Tk()
root["bg"] = "#000"
root.geometry("485x550+200+200")
root.title("Калькулятор")
root.resizable(False, False)
app = Main(root)
app.pack()
root.mainloop()
2.Делаем кнопочки
В методе build создаём такой список:
btns = [
"C", "DEL", "*", "=",
"1", "2", "3", "/",
"4", "5", "6", "+",
"7", "8", "9", "-",
"+/-", "0", "%", "X^2"
]
Он отвечает за все кнопки, отображающиеся у нас в окне.
3.Мы создали список, теперь проходимся циклом и отображаем эти кнопки. Для этого в том же методе пишем следующее:
x = 10
y = 140
for bt in btns:
com = lambda x=bt: self.logicalc(x)
Button(text=bt, bg="#FFF",
font=("Times New Roman", 15),
command=com).place(x=x, y=y,
width=115,
height=79)
x += 117
if x > 400:
x = 10
y += 81
4.Замечательно, у нас есть кнопочки. Добавляем надпись с выводом результата. Я хочу что бы текст был слева, следовательно, атрибутов выравнивания текста писать не нужно.
self.formula = "0"
self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"),
bg="#000", foreground="#FFF")
self.lbl.place(x=11, y=50)
5.Пишем логику
def logicalc(self, operation):
if operation == "C":
self.formula = ""
elif operation == "DEL":
self.formula = self.formula[0:-1]
elif operation == "X^2":
self.formula = str((eval(self.formula))**2)
elif operation == "=":
self.formula = str(eval(self.formula))
else:
if self.formula == "0":
self.formula = ""
self.formula += operation
self.update()
def update(self):
if self.formula == "":
self.formula = "0"
self.lbl.configure(text=self.formula)
Так, как у нас нет ввода с клавиатуры, мы можем позволить себе сделать так, просто проверить на спец. кнопки (C, DEL, =) и в остальных случаях просто добавить это к формуле.
за внимание!)
Поделитесь своими знаниями, ответьте на вопрос:
(1)что можно назвать базой данных? a)записная книжка; b)энциклопедия; c)текст параграфа; d)телефонный справочник; e)программа на компьютере; (2)существует несколько различных структур информационных моделей и соответственно различных типов баз данных: a)информационные; b)иерархические; c)сетевые; d)табличные; e)компьютерные; (3)база данных (бд) — это информационная модель, позволяющая в виде хранить данные о группе объектов, a)одинаковым количеством информации; b)одинаковым количеством символов; c)одинаковым набором свойств; d)разным набором свойств; (4)столбцы в табличной базе данных называют: a)полями; b)лугами; c)колонками; d)записями; (5)строки в табличной базе данных называют: a)данными; b)записями; c)полями; d)ключевыми полями; (6)в чем заключается разница между записью и полем в табличной базе данных? (7)поля каких типов могут присутствовать в базе данных? (8)чем отличается ключевое поле от остальных полей? (9)что можно назвать иерархической базой данных? a)каталог папок windows; b)записная книжка; c)словарь; d)реестр windows; (10)что можно назвать сетевой базой данных? a)доменная система имен; b)всемирная паутина; c)энциклопедия; (11)субд — это: a)программа; b)файл; c)база данных; d)табличная база данных; (12)запросы позволяют: a)автоматизировать работу с бд; b)печатать данные, содержащиеся в таблицах, в красиво оформленном виде; c)выбирать данные на на основании заданных условий; d)отображать данные, содержащиеся в таблицах, в более удобном для восприятия виде;