博客列表 >轻轻松松看电影,这几行python代码帮你搞定

轻轻松松看电影,这几行python代码帮你搞定

Coco
Coco原创
2021年12月13日 15:19:3717797浏览

  # -*- encoding:utf-8 -*-

  import sys

  from PyQt5.QtWidgets import QDialog, QLabel, QPushButton, QLineEdit, QListWidget, QGridLayout, QComboBox, QMessageBox, QApplication, QMenuBar, QAction, QMainWindow, QWidget, QVBoxLayout

  from PyQt5.QtCore import pyqtSlot, QThread, QObject

  from PyQt5.QtGui import QIcon, QPixmap, QImage

  from movieSource.MovieHeaven import MovieHeaven

  class ImageWindow(QMainWindow):

  def __init__(self, resources, title):

  super(ImageWindow, self).__init__()

  self.setWindowTitle(title)

  self.central_widget=QWidget()

  self.setCentralWidget(self.central_widget)

  layout=QVBoxLayout(self.central_widget)

  image=QImage(resources)

  pixmap=QPixmap(resources)

  image_label=QLabel(self)

  image_label.setPixmap(pixmap)

  image_label.resize(pixmap.width(), pixmap.height())

  layout.addWidget(image_label)

  class LayoutDialog(QMainWindow):

  __slots__=['word', 'movie_name_label', 'movie_name_line_edit', 'movie_source_label', 'movie_source_combobox',

  'search_push_button', 'tip_label', 'search_content_label', 'search_content_text_list']

  def __init__(self):

  super().__init__()

  self.left=300

  self.top=300

  self.width=400

  self.height=450

  self=WorkThread()

  self.init_widgets().init_layout().init_event()

  def init_widgets(self):

  self.setWindowTitle(self.tr("Search Movies"))

  self.setGeometry(self.left, self.top, self.width, self.height)

  self.movie_name_label=QLabel(self.tr("电影名称:"))

  self.movie_name_line_edit=QLineEdit()

  self.movie_source_label=QLabel(self.tr("选择片源:"))

  self.movie_source_combobox=QComboBox()

  self.movie_source_combobox.addItem(self.tr('电影天堂'))

  self.search_push_button=QPushButton(self.tr("查询"))

  self.tip_label=QLabel(self.tr("未开始查询..."))

  self.search_content_label=QLabel(self.tr("查询内容:"))

  self.search_content_text_list=QListWidget()

  self.menu_bar=self.menuBar()

  return self

  def init_layout(self):

  top_layout=QGridLayout()

  top_layout.addWidget(self.movie_name_label, 0, 0)

  top_layout.addWidget(self.movie_name_line_edit, 0, 1)

  top_layout.addWidget(self.movie_source_label, 0, 2)

  top_layout.addWidget(self.movie_source_combobox, 0, 3)

  top_layout.addWidget(self.search_push_button, 0, 4)

  top_layout.addWidget(self.tip_label, 3, 1)

  top_layout.addWidget(self.search_content_label, 3, 0)

  top_layout.addWidget(self.search_content_text_list, 4, 0, 2, 5)

  main_frame=QWidget()

  self.setCentralWidget(main_frame)

  main_frame.setLayout(top_layout)

  self.reward_window=ImageWindow('

  resources/wechat_reward.jpg', '赞赏')

  self.watch_window=ImageWindow('

  resources/watch_wechat.jpg', '关注')

  return self

  def init_event(self):

  self.search_push_button.clicked.connect(self.search)

  self.search_content_text_list.itemClicked.connect(self.copy_text)

  reward_action=QAction('赞赏', self)

  reward_action.setIcon(QIcon('resources/reward.png'),)

  reward_action.triggered.connect(self.reward)

  watch_action=QAction('关注', self)

  watch_action.setIcon(QIcon('resources/watch.png'),)

  watch_action.triggered.connect(self.watch_wechat)

  reward_menu=self.menu_bar.addMenu('支持作者')

  reward_menu.addAction(reward_action)

  reward_menu.addAction(watch_action)

  def reward(self):

  self.reward_window()

  def watch_wechat(self):

  self.watch_window()

  def search(self):

  self.tip_label.setText(self.tr("正在查询请稍后..."))

  movie_name=self.movie_name_line_edit.text()

  if movie_name:

  selfder(movie_name, self.movie_source_combobox,

  self.tip_label, self.search_content_text_list)

  else:

  self.critical("请输入电影名称!")

  def critical(self, message):

  """

  when the movieName is None,

  remind users

  """

  QMessageBox.critical(self, self.tr("致命错误"),

  self.tr(message))

  def copy_text(self):

  copied_text=self.search_content_text_list.currentItem().text()

  QApplication.clipboard().clear()

  QApplication.clipboard().setText(copied_text)

  self.slot_information()

  def slot_information(self):

  QMessageBoxrmation(self, "Success!", self.tr("成功将游戏账号拍卖平台内容复制到剪贴板上!"))

  class WorkThread(QThread):

  def __init__(self):

  QThread.__init__(self)

  def render(self, movie_name, movie_source_combobox, tip_label, search_content_text_list):

  self.movies_list=[]

  self.movie_source_combobox=movie_source_combobox

  self.movie_name=movie_name

  self.tip_label=tip_label

  self.search_content_text_list=search_content_text_list

  self.start()

  def get_select_movie_source(self, movie_name):

  """

  according to the value of the QComboBox,

  generate the right class of movie search

  """

  movies, url, params=None, None, {

  "kwtype": "0", "searchtype": "title"}

  select_source=self.movie_source_combobox.currentText()

  if select_source==self.tr('电影天堂'):

  movies=MovieHeaven()

  url="s.dydytt/plus/search.php"

  params["keyword"]=movie_name.encode('gb2312')

  return movies, url, params

  def run(self):

  search_movies, url, params=self.get_select_movie_source(

  self.movie_name)

  try:

  self.movies_list=search_movies.get_display_content(url, params)

  except Exception as e:

  self.movies_list.append(self.tr("过于频繁的访问"))

  finally:

  self.search_content_text_list.clear()

  self.search_content_text_list.addItems(self.movies_list)

  self.tip_label.setText(self.tr("查询结束"))

  app=QApplication(sys.argv)

  dialog=LayoutDialog()

  dialog()

  app.exec_()

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议