Advertisement
2629881

Untitled

Jun 26th, 2021
737
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.30 KB | None | 0 0
  1. import sys
  2. import urllib.request
  3. from PyQt6.QtCore import Qt
  4. from PyQt6.QtGui import QPixmap
  5. from PyQt6.QtWidgets import QDialog, QApplication, QStackedWidget, QMessageBox, QLabel, QGridLayout
  6. from PyQt6.uic import loadUi
  7. from Imdb import Imdb
  8. # # lineEdit progress bar
  9. # from colour import Color
  10. # import pyqtlineeditprogressbar as lepbar
  11. # from pyqtlineeditprogressbar import PyQtLineEditProgressBar
  12.  
  13.  
  14. class MainWindow(QDialog):
  15.     def __init__(self):
  16.         super().__init__()
  17.         loadUi("gui/maintabwindow.ui", self)
  18.  
  19.         #  scrollArea settings
  20.         self.scrollAreaTab3.setWidget(self.tab3widget)
  21.         self.scrollAreaTab3.setStyleSheet("QScrollBar {height:50px;}")
  22.         self.scrollAreaTab2.setWidget(self.tab2widget)
  23.  
  24.         #  create tab2 layout
  25.         grid = QGridLayout()
  26.         for i in range(1, 15):
  27.             for j in range(1, 4):
  28.                 grid.addWidget(QLabel(str(i) + str(j)), i, j)
  29.         self.tab2widget.setLayout(grid)
  30.  
  31.         """"
  32.        #  stretch columns to 30% of layout width
  33.        # grid.setColumnStretch(1, 4)
  34.        # grid.setColumnStretch(2, 4)
  35.        # grid.setColumnStretch(3, 4)
  36.        
  37.        #  resize and realign tab2 layout
  38.        # for widget in grid.children():  # doesn't work because for some reason grid is sibling not father of QLabel
  39.        #     if isinstance(widget, QLabel):
  40.        #         widget.setAlignment(Qt.AlignmentFlag.AlignCenter)
  41.        """
  42.  
  43.         #  resize and realign tab2 layout
  44.         for label in self.tab2widget.children():
  45.             if isinstance(label, QLabel):
  46.                 label.setAlignment(Qt.AlignmentFlag.AlignCenter)
  47.  
  48.         #  apply something to all items in grid
  49.         self.index = 0
  50.         while self.index < 42:
  51.             grid.itemAt(self.index).widget().setStyleSheet("QLabel {background-color: yellow;}")
  52.             self.index = self.index + 1
  53.  
  54.         #  layout positioning by setFixedSize of 1st widget in each row
  55.         self.grid_index = 0
  56.         while self.grid_index < 42:
  57.             grid.itemAt(self.grid_index).widget().setFixedSize(229, 13)
  58.             grid.itemAt(self.grid_index+3).widget().setFixedSize(229, 227)
  59.             self.grid_index = self.grid_index + 6
  60.  
  61.         #  progress bar initialization; first tab focus
  62.         self.tabWidget.currentChanged.connect(self.tab_changed)
  63.         self.tabWidget.setCurrentIndex(0)  # sets tab Index(0) to focused
  64.         self.progressBar.hide()
  65.  
  66.         #  naming tabs
  67.         self.tabWidget.setTabText(0, "Search")
  68.         self.tabWidget.setTabText(1, "Movies")
  69.         self.tabWidget.setTabText(2, "Shows")
  70.  
  71.         #  top layout settings
  72.         self.line_search.setPlaceholderText("Search for: movie, show, director, actor")
  73.         # self.line_search.setText("Search for: movie, show, director, actor")
  74.         # QTimer.singleShot(5000, self.clear_line_search)
  75.  
  76.         #  events for top layout
  77.         self.btn_search.clicked.connect(self.search_movies)
  78.         self.line_search.returnPressed.connect(self.search_movies)
  79.         self.btn_select.clicked.connect(self.clear_tab3)
  80.  
  81.     #  keyboard's events
  82.     def keyPressEvent(self, e):
  83.         if e.key() == Qt.Key.Key_Escape.value:
  84.             choice = QMessageBox.question(self, 'Exit', "Close UwUatch?",  # make Esc work as Discard in this popup
  85.                                           QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Discard)
  86.             if choice == QMessageBox.StandardButton.Ok:
  87.                 sys.exit()
  88.  
  89.     def clear_line_search(self):
  90.         self.line_search.setText("")
  91.  
  92.     def tab_changed(self):
  93.         print("Initiated tab ", self.tabWidget.currentIndex())
  94.  
  95.     def search_for_movie(self):
  96.         movie = self.line_search.text()
  97.         results = imdb.search_for_movie(movie)
  98.         title = str(results[0]['title'])
  99.         year = str(results[0]['year'])
  100.         self.tab1_text_browser.setText(title
  101.                                        + " "
  102.                                        + year)
  103.  
  104.     def search_for_movies(self):
  105.         self.tab1_text_browser.clear()
  106.         movies = self.line_search.text()
  107.         result = imdb.search_for_movies(movies)
  108.         self.tab1_text_browser.setText(result)
  109.  
  110.     def clear_tab3(self):
  111.         self.title_1.clear()
  112.         self.img_1.clear()
  113.  
  114.     #  some dead method
  115.     def search_movies(self):
  116.         self.search_for_movies()
  117.         # for widget in self.tab3widget.children():  # fix this
  118.         #     if isinstance(widget, PyQt6.QtWidgets.QLabel):
  119.         #     widget.clear()
  120.  
  121.         self.tab3widget.hide()
  122.         self.progressBar.setValue(0)
  123.         self.progressBar.show()
  124.         try:
  125.             movies = self.line_search.text()
  126.             imdb.search_movies(movies)
  127.             tyd = imdb.title_year_dict
  128.             ud = imdb.url_dict
  129.             print(tyd)
  130.             print(ud)
  131.             # assigning title from title_year_dict
  132.             self.title_1.setText(tyd[1])
  133.             self.title_2.setText(tyd[2])
  134.             self.title_3.setText(tyd[3])
  135.             self.title_4.setText(tyd[4])
  136.             self.title_5.setText(tyd[5])
  137.             self.title_6.setText(tyd[6])
  138.             self.title_7.setText(tyd[7])
  139.             self.title_8.setText(tyd[8])
  140.             self.title_9.setText(tyd[9])
  141.             self.title_10.setText(tyd[10])
  142.             self.title_11.setText(tyd[11])
  143.             self.title_12.setText(tyd[12])
  144.             self.title_13.setText(tyd[13])
  145.             self.title_14.setText(tyd[14])
  146.             self.title_15.setText(tyd[15])
  147.             self.title_16.setText(tyd[16])
  148.             self.title_17.setText(tyd[17])
  149.             self.title_18.setText(tyd[18])
  150.             self.title_19.setText(tyd[19])
  151.             self.title_20.setText(tyd[20])
  152.             # assigning img from url_dict
  153.             pixmap = QPixmap()  # create Pixmap instance
  154.             data1 = urllib.request.urlopen(ud[1]).read()  # read URL
  155.             pixmap.loadFromData(data1)  # load data to pixmap
  156.             pixmap = pixmap.scaledToHeight(227)  # scale pixmap to Width
  157.             self.img_1.setPixmap(pixmap)  # assign pixmap to QLabel
  158.             self.progressBar.setValue(5)
  159.             go_url = urllib.request.urlopen
  160.             pixmap.loadFromData(go_url(ud[2]).read())
  161.             pixmap = pixmap.scaledToHeight(227)
  162.             self.img_2.setPixmap(pixmap)
  163.             self.progressBar.setValue(10)
  164.             pixmap.loadFromData(go_url(ud[3]).read())
  165.             pixmap = pixmap.scaledToHeight(227)
  166.             self.img_3.setPixmap(pixmap)
  167.             self.progressBar.setValue(15)
  168.             pixmap.loadFromData(go_url(ud[4]).read())
  169.             pixmap = pixmap.scaledToHeight(227)
  170.             self.img_4.setPixmap(pixmap)
  171.             self.progressBar.setValue(20)
  172.             pixmap.loadFromData(go_url(ud[5]).read())
  173.             pixmap = pixmap.scaledToHeight(227)
  174.             self.img_5.setPixmap(pixmap)
  175.             self.progressBar.setValue(25)
  176.             pixmap.loadFromData(go_url(ud[6]).read())
  177.             pixmap = pixmap.scaledToHeight(227)
  178.             self.img_6.setPixmap(pixmap)
  179.             self.progressBar.setValue(30)
  180.             pixmap.loadFromData(go_url(ud[7]).read())
  181.             pixmap = pixmap.scaledToHeight(227)
  182.             self.img_7.setPixmap(pixmap)
  183.             self.progressBar.setValue(35)
  184.             pixmap.loadFromData(go_url(ud[8]).read())
  185.             pixmap = pixmap.scaledToHeight(227)
  186.             self.img_8.setPixmap(pixmap)
  187.             self.progressBar.setValue(40)
  188.             pixmap.loadFromData(go_url(ud[9]).read())
  189.             pixmap = pixmap.scaledToHeight(227)
  190.             self.img_9.setPixmap(pixmap)
  191.             self.progressBar.setValue(45)
  192.             pixmap.loadFromData(go_url(ud[10]).read())
  193.             pixmap = pixmap.scaledToHeight(227)
  194.             self.img_10.setPixmap(pixmap)
  195.             self.progressBar.setValue(50)
  196.             pixmap.loadFromData(go_url(ud[11]).read())
  197.             pixmap = pixmap.scaledToHeight(227)
  198.             self.img_11.setPixmap(pixmap)
  199.             self.progressBar.setValue(55)
  200.             pixmap.loadFromData(go_url(ud[12]).read())
  201.             pixmap = pixmap.scaledToHeight(227)
  202.             self.img_12.setPixmap(pixmap)
  203.             self.progressBar.setValue(60)
  204.             pixmap.loadFromData(go_url(ud[13]).read())
  205.             pixmap = pixmap.scaledToHeight(227)
  206.             self.img_13.setPixmap(pixmap)
  207.             self.progressBar.setValue(65)
  208.             pixmap.loadFromData(go_url(ud[14]).read())
  209.             pixmap = pixmap.scaledToHeight(227)
  210.             self.img_14.setPixmap(pixmap)
  211.             self.progressBar.setValue(70)
  212.             pixmap.loadFromData(go_url(ud[15]).read())
  213.             pixmap = pixmap.scaledToHeight(227)
  214.             self.img_15.setPixmap(pixmap)
  215.             self.progressBar.setValue(75)
  216.             pixmap.loadFromData(go_url(ud[16]).read())
  217.             pixmap = pixmap.scaledToHeight(227)
  218.             self.img_16.setPixmap(pixmap)
  219.             self.progressBar.setValue(80)
  220.             pixmap.loadFromData(go_url(ud[17]).read())
  221.             pixmap = pixmap.scaledToHeight(227)
  222.             self.img_17.setPixmap(pixmap)
  223.             self.progressBar.setValue(85)
  224.             pixmap.loadFromData(go_url(ud[18]).read())
  225.             pixmap = pixmap.scaledToHeight(227)
  226.             self.img_18.setPixmap(pixmap)
  227.             self.progressBar.setValue(90)
  228.             pixmap.loadFromData(go_url(ud[19]).read())
  229.             pixmap = pixmap.scaledToHeight(227)
  230.             self.img_19.setPixmap(pixmap)
  231.             self.progressBar.setValue(95)
  232.             pixmap.loadFromData(go_url(ud[20]).read())
  233.             pixmap = pixmap.scaledToHeight(227)
  234.             self.img_20.setPixmap(pixmap)
  235.             self.progressBar.setValue(0)
  236.             self.progressBar.hide()
  237.             self.tab3widget.show()
  238.         except Exception as error:
  239.             print(f"Error: {error}")
  240.             self.progressBar.setValue(0)
  241.             self.progressBar.hide()
  242.             self.tab3widget.show()
  243.             return
  244.  
  245.     def assign_title_and_img(self):
  246.         pass
  247.  
  248.  
  249. imdb = Imdb()
  250.  
  251. app = QApplication(sys.argv)
  252. window = MainWindow()
  253. widget = QStackedWidget()
  254. widget.addWidget(window)
  255. widget.setFixedSize(738, 609)
  256. widget.show()
  257. # window.show()  #  don't know why this was here, maybe will
  258. sys.exit(app.exec())
  259.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement