Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. import sys
  2. from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication, QPushButton, QLCDNumber
  3. from PyQt5.QtCore import Qt
  4. from PyQt5.QtWidgets import QMainWindow, QLabel
  5.  
  6.  
  7. class Example(QMainWindow):
  8. def __init__(self, *items):
  9. super().__init__()
  10. self.items = items
  11. self.initUI()
  12.  
  13. def initUI(self):
  14. self.setGeometry(300, 300, 600, 300)
  15. self.setWindowTitle('Заказ в Макдональдсе 2')
  16. self.subjects = []
  17. self.k = 0
  18. for item in self.items:
  19. sb = subject(*item, self)
  20. sb.move(0, self.k * 60)
  21. self.subjects.append(sb)
  22. self.k += 1
  23. self.btn = QPushButton('рассчитать', self)
  24. self.btn.move(100, self.k * 60 + 50)
  25. self.btn.clicked.connect(self.start)
  26.  
  27. def start(self):
  28. self.bill = Bill(list(filter(lambda x: x.count > 0, self.subjects)))
  29. self.bill.show()
  30.  
  31.  
  32. class Bill(QWidget):
  33. def __init__(self, arg):
  34. super().__init__()
  35. self.food = arg
  36. self.initUI()
  37.  
  38. def initUI(self):
  39. self.setGeometry(400, 400, 600, 300)
  40. self.setWindowTitle('Чек')
  41. self.count = 0
  42.  
  43. for i in range(len(self.food)):
  44. self.name_label = QLabel(self)
  45. self.name_label.setText(str(self.food[i]))
  46. self.name_label.move(20, 20 * (i + 1))
  47. self.count += self.food[i].tp()
  48. self.name_fin1 = QLabel(self)
  49. self.name_fin1.setText('-------------------------------------')
  50. self.name_fin1.move(20, 20 * (i + 2))
  51. self.name_fin2 = QLabel(self)
  52. self.name_fin2.setText(str(self.count))
  53. self.name_fin2.move(20, 20 * (i + 3))
  54.  
  55.  
  56. class subject:
  57. def __init__(self, title, price, screen):
  58. self.title = title
  59. self.price = price
  60. self.count = 0
  61.  
  62. self.minus = QPushButton('-', screen)
  63. self.minus.clicked.connect(self.decrease)
  64.  
  65. self.plus = QPushButton('+', screen)
  66. self.plus.clicked.connect(self.increase)
  67.  
  68. self.title_label = QLabel(screen)
  69. self.title_label.setText(self.title)
  70. self.title_label.resize(self.title_label.sizeHint())
  71.  
  72. self.price_label = QLabel(screen)
  73. self.price_label.setText('{} р.'.format(self.price))
  74. self.price_label.resize(self.price_label.sizeHint())
  75.  
  76. self.disp = QLCDNumber(screen)
  77.  
  78. def decrease(self):
  79. self.count = max(0, self.count - 1)
  80. self.disp.display(self.count)
  81.  
  82. def increase(self):
  83. self.count += 1
  84. self.disp.display(self.count)
  85.  
  86. def move(self, x, y):
  87. self.minus.move(x + 10, y + 10)
  88. self.minus.resize(50, 50)
  89. self.disp.move(x + 70, y + 20)
  90. self.plus.move(x + 180, y + 10)
  91. self.plus.resize(50, 50)
  92. self.title_label.move(x + 240, y + 20)
  93. self.price_label.move(x + 500, y + 20)
  94.  
  95. def tp(self):
  96. return self.count * self.price
  97.  
  98. def __str__(self):
  99. return "{} {}руб. {} шт".format(self.title, self.price, self.count)
  100.  
  101. def __repr__(self):
  102. return "{} {}руб.".format(self.title, self.price)
  103.  
  104.  
  105. if __name__ == '__main__':
  106. app = QApplication(sys.argv)
  107. with open("input.txt", encoding='utf-8') as f:
  108. data = []
  109. for line in f:
  110. title, price = line.strip().split(';')
  111. data.append((title, int(price)))
  112. ex = Example(*data)
  113. ex.show()
  114. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement