Проєкт "Піцерія"
Розробити форму замовлення піци з різними начинками та різних розмірів:

import sys
from PyQt4 import QtCore, QtGui, uic
form_class = uic.loadUiType("hello_form.ui")[0]
class MyWindowClass(QtGui.QMainWindow, form_class):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.pushButton_clicked) # подія клацання кнопки прив'язується до методу
def pushButton_clicked(self): # метод опису дій при клацанні кнопки
price=20 # базова вартість піци
# обчислення вартості піци
self.label.setText(str(price)) # записуємо вартість піци у напис
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
myWindow.show()
app.exec_()
Вартість піци обчислюється за принципом: основа коштує 20 гривень, кожна начинка додає до вартості певну суму, якщо цю начинку позначено:
if self.checkBox.isChecked():
price+=15
Залежно від обраного розміру піци регулюється остаточна вартість
if self.radioButton.isChecked():
price*=0.75
Доповнення 1

Додано можливість обирати кількість додаткових начинок: на початку проекту віконечка з кількістю є невидимі (але присутні на формі); якщо прапорець позначено, то віконечко з кількістю стає видимим. Це означає, що потрібно створити подію клацання прапорця checkBox_2.clicked.connect:
self.spinBox.hide() # приховання віконечка з кількістю
self.checkBox_2.clicked.connect(self.checkBox_2_clicked) # створення події клацання прапорця
def checkBox_2_clicked(self): # обробка події клацання прапорця
self.spinBox.show() # показ віконечка з кількістю
Доповнення 2
Додамо компонент timeEdit - для виведення часу, до якого потрібно доставити замовлення. Наступний код потрібно дописати в кінці роботи функції pushButton_clicked.
global delivery
this_moment = QtCore.QTime.currentTime() # поточний час
delivery=this_moment.addSecs(60*30) # час доставки
self.timeEdit.setTime(delivery) # виведення часу доставки в timeEdit
Для того, щоб постійно перевіряти, скільки часу залишилось, потрібно створити вбудований таймер, який кожні 1000 мілісекунд оновлюватиме інформацію в написі. Наступний код потрібно дописати на початку роботи функції pushButton_clicked
self.timer = QtCore.QTimer(self) # створення таймера
self.timer.timeout.connect(self.tick) # подія спрацювання таймера
self.timer.start(1000) # затримка таймера
При спрацювання таймера необхідно порівняти годину, зафіксовану на початку роботи програми (delivery) та новий поточний час (this_moment). Створіть нову функцію def tick(self) в класі MyWindowClass, та опишіть роботу події спрацювання таймера.
global delivery
this_moment = QtCore.QTime.currentTime() # новий поточний час
left=this_moment.secsTo(delivery) # різниця часу (в секундах) між delivery та this_moment
Залишається перевести отриману кількість секунд в хвилини та секунди (шляхом ділення на 60) та вивести отримані значення, наприклад у текстове поле
self.label.setText(str(left))