Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication, QPushButton, QLCDNumber
- from PyQt5.QtCore import Qt
- from PyQt5.QtWidgets import QMainWindow, QLabel
- class Example(QMainWindow):
- def __init__(self, *items):
- super().__init__()
- self.items = items
- self.initUI()
- def initUI(self):
- self.setGeometry(300, 300, 600, 300)
- self.setWindowTitle('Заказ в Макдональдсе 2')
- self.subjects = []
- self.k = 0
- for item in self.items:
- sb = subject(*item, self)
- sb.move(0, self.k * 60)
- self.subjects.append(sb)
- self.k += 1
- self.btn = QPushButton('рассчитать', self)
- self.btn.move(100, self.k * 60 + 50)
- self.btn.clicked.connect(self.start)
- def start(self):
- self.bill = Bill(list(filter(lambda x: x.count > 0, self.subjects)))
- self.bill.show()
- class Bill(QWidget):
- def __init__(self, arg):
- super().__init__()
- self.food = arg
- self.initUI()
- def initUI(self):
- self.setGeometry(400, 400, 600, 300)
- self.setWindowTitle('Чек')
- self.count = 0
- for i in range(len(self.food)):
- self.name_label = QLabel(self)
- self.name_label.setText(str(self.food[i]))
- self.name_label.move(20, 20 * (i + 1))
- self.count += self.food[i].tp()
- self.name_fin1 = QLabel(self)
- self.name_fin1.setText('-------------------------------------')
- self.name_fin1.move(20, 20 * (i + 2))
- self.name_fin2 = QLabel(self)
- self.name_fin2.setText(str(self.count))
- self.name_fin2.move(20, 20 * (i + 3))
- class subject:
- def __init__(self, title, price, screen):
- self.title = title
- self.price = price
- self.count = 0
- self.minus = QPushButton('-', screen)
- self.minus.clicked.connect(self.decrease)
- self.plus = QPushButton('+', screen)
- self.plus.clicked.connect(self.increase)
- self.title_label = QLabel(screen)
- self.title_label.setText(self.title)
- self.title_label.resize(self.title_label.sizeHint())
- self.price_label = QLabel(screen)
- self.price_label.setText('{} р.'.format(self.price))
- self.price_label.resize(self.price_label.sizeHint())
- self.disp = QLCDNumber(screen)
- def decrease(self):
- self.count = max(0, self.count - 1)
- self.disp.display(self.count)
- def increase(self):
- self.count += 1
- self.disp.display(self.count)
- def move(self, x, y):
- self.minus.move(x + 10, y + 10)
- self.minus.resize(50, 50)
- self.disp.move(x + 70, y + 20)
- self.plus.move(x + 180, y + 10)
- self.plus.resize(50, 50)
- self.title_label.move(x + 240, y + 20)
- self.price_label.move(x + 500, y + 20)
- def tp(self):
- return self.count * self.price
- def __str__(self):
- return "{} {}руб. {} шт".format(self.title, self.price, self.count)
- def __repr__(self):
- return "{} {}руб.".format(self.title, self.price)
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- with open("input.txt", encoding='utf-8') as f:
- data = []
- for line in f:
- title, price = line.strip().split(';')
- data.append((title, int(price)))
- ex = Example(*data)
- ex.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement