| |
|
|
| """ Implementation of simple adware that pops multiple |
| windows with the advertisements. |
| """ |
|
|
| import logging |
| import sys |
| import random |
|
|
| from PySide2.QtWidgets import QApplication, QDialog, QLabel, QVBoxLayout |
|
|
|
|
| class AdWindow(QDialog): |
| """ This class represents ad window shown on the screen. """ |
|
|
| def __init__(self, ad_slogan, parent=None): |
| super(AdWindow, self).__init__(parent) |
| self.setWindowTitle("Advertisement!") |
|
|
| |
| self.label = QLabel(ad_slogan) |
| layout = QVBoxLayout() |
| layout.addWidget(self.label) |
|
|
| self.setLayout(layout) |
|
|
| def closeEvent(self, event): |
| |
| |
| event.ignore() |
|
|
|
|
| class Adware(QApplication): |
| """ This class represents implementation of adware. """ |
|
|
| def __init__(self, args): |
| super(Adware, self).__init__(args) |
|
|
| @property |
| def advert_slogans(self): |
| """ Slogans of the promoted adds. """ |
| return ( |
| 'Buy the milk in the milk shops!', |
| 'Buy the clothes in the wool shops!', |
| 'Buy the food in the food shops!' |
| ) |
|
|
| def create_ad_window(self, ad_slogan): |
| """ Creates a windows showing the advertisement |
| slogan. |
| |
| :param str ad_slogan: Text of the ad. |
| """ |
| window = AdWindow(ad_slogan=ad_slogan) |
| window.show() |
| return window |
|
|
| def show_ads(self): |
| """ Creates the main GUI application and shows |
| the ads based on `:class:~Adware.advert_slogans` |
| """ |
| ad_windows = [] |
| for advert in self.advert_slogans: |
| |
| ad_window = self.create_ad_window(advert) |
| |
| x_coordinate, y_coordinate = random.randint(1, 800), random.randint(1, 600) |
| ad_window.move(x_coordinate, y_coordinate) |
| ad_windows.append(ad_window) |
|
|
| return ad_windows |
|
|
|
|
| if __name__ == '__main__': |
| logging.basicConfig(level=logging.DEBUG) |
|
|
| |
| adware = Adware(sys.argv) |
| windows = adware.show_ads() |
|
|
| sys.exit(adware.exec_()) |
|
|