Esempio n. 1
0
 def UiComponents(self):
     button = QPushButton("Close Window", self)
     button.setGeometry(QRect(100, 100, 111, 50))
     button.setIcon(QtGui.QIcon("home.png"))
     button.setIconSize(QSize(40, 40))
     button.setToolTip("This Is Click Me Button")
     button.clicked.connect(ClickMe)
Esempio n. 2
0
 def __init__(self, parent=None):
     super(WinForm, self).__init__(parent)
     self.setGeometry(300, 300, 350, 350)
     self.setWindowTitle('点击按钮关闭窗口')
     quit = QPushButton('Close', self)
     quit.setGeometry(10, 10, 60, 35)
     quit.setStyleSheet("background-color: red")
     quit.clicked.connect(self.close)
Esempio n. 3
0
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('LazyDictionary')
        self.setWindowIcon(QIcon('book.png'))
        self.setFixedHeight(100)
        self.setFixedWidth(300)
        self.label = QLabel('word count: 0', self)
        self.label.setFont(QFont('san serif', 15))
        self.label.move(90, 0)
        self.button()
        self.oneClick = True

    def button(self):
        self.btn0 = QPushButton('Start', self)
        self.btn0.setGeometry(0, 30, 150, 70)
        self.btn0.setStyleSheet('background-color:green')
        self.btn0.setFont(QFont('san serif', 15))
        self.btn1 = QPushButton('Stop', self)
        self.btn1.setGeometry(150, 30, 150, 70)
        self.btn1.setStyleSheet('background-color:grey')
        self.btn1.setFont(QFont('san serif', 15))
        self.btn0.clicked.connect(self.clickButton0)
        self.btn1.clicked.connect(self.clickButton1)

    def clickButton0(self):
        self.btn0.setStyleSheet('background-color:grey')
        self.btn1.setStyleSheet('background-color:red')
        if self.oneClick:
            main.start()
        self.oneClick = False

    def clickButton1(self):
        self.btn1.setStyleSheet('background-color:grey')
        self.btn0.setStyleSheet('background-color:green')
        main.end()
        self.oneClick = True
        
    def checkCount(self):
        text = 'word count: ' + str(htmlparse.wordCount)
        self.label.setText(text)
class TableHeaderView(QHeaderView):
    def __init__(self, orientation, parent, title):
        """ Custom QHeaderView that shows how to add buttons to the header view """
        super().__init__(orientation, parent)
        # Create the buttons that will be added to the table headers
        self.add_row_button = QPushButton("+", self)
        # Use the sizeHint() values to determine the height and width
        # of all of the buttons
        height = self.add_row_button.sizeHint().height()
        width = self.add_row_button.sizeHint().width() + 10
        self.add_row_button.setGeometry(self.offset() + 5, 0, width, height)
        self.add_row_button.clicked.connect(parent.addRowToTable)

        self.delete_row_button = QPushButton("-", self)
        self.delete_row_button.setGeometry(self.offset() + width + 5, 0, width,
                                           height)
        self.delete_row_button.clicked.connect(parent.deleteRowFromTable)

        self.clear_rows_button = QPushButton("Clear", self)
        self.clear_rows_button.setGeometry(self.offset() + width * 2 + 5, 0,
                                           width, height)
        self.clear_rows_button.clicked.connect(parent.clearRowsFromTable)
class View(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('Editor de Tags')
        self.setFixedSize(700, 480)

        self._central_widget = QWidget(self)
        self.setCentralWidget(self._central_widget)

        self.left_widget = QWidget(self._central_widget)
        self.left_widget.setGeometry(0, 80, 300, 380)
        self.right_widget = QWidget(self._central_widget)
        self.right_widget.setGeometry(305, 50, 400, 480)

        self.left_widget_top = QWidget(self.left_widget)
        self.left_widget_top.setGeometry(21, 10, 300, 50)
        self.left_widget_bot = QWidget(self.left_widget)
        self.left_widget_bot.setGeometry(0, 40, 300, 300)

        self._create_file_path_display()
        self._create_metadata_display()
        self._create_buttons()
        self._create_tool_bar()
        self._create_status_bar()

    #crear el visor de archivos y los metadatos
    def _create_file_path_display(self):
        self.file_path_display = QLineEdit(parent=self._central_widget)
        self.file_path_display.setGeometry(0, 0, 700, 60)
        self.file_path_display.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.file_path_display.setReadOnly(True)

    def _create_metadata_display(self):
        self.hlayout_track_bpm = QHBoxLayout()
        self.form_layout_track = QFormLayout()
        self.form_layout_bpm = QFormLayout()

        self.display_title = QLineEdit()
        self.display_title.setFixedSize(200, 20)
        self.display_artist = QLineEdit()
        self.display_artist.setFixedSize(200, 20)
        self.display_album = QLineEdit()
        self.display_album.setFixedSize(200, 20)
        self.display_album_artist = QLineEdit()
        self.display_album_artist.setFixedSize(200, 20)
        self.display_genre = QLineEdit()
        self.display_genre.setFixedSize(200, 20)
        self.display_track = QLineEdit()
        self.display_track.setFixedSize(60, 20)
        self.display_release_date = QLineEdit()
        self.display_release_date.setFixedSize(200, 20)
        self.display_bpm = QLineEdit()
        self.display_bpm.setFixedSize(60, 20)
        self.display_publisher = QLineEdit()
        self.display_publisher.setFixedSize(200, 20)

        self.hlayout_track_bpm.addLayout(self.form_layout_track)
        self.form_layout_track.addRow('Pista:', self.display_track)
        self.hlayout_track_bpm.addLayout(self.form_layout_bpm)
        self.form_layout_bpm.addRow('BPM:', self.display_bpm)
        self.left_widget_top.setLayout(self.hlayout_track_bpm)

        self.form_layout = QFormLayout()
        self.form_layout.addRow('Titulo:', self.display_title)
        self.form_layout.addRow('Artista:', self.display_artist)
        self.form_layout.addRow('Album:', self.display_album)
        self.form_layout.addRow('Album artist:', self.display_album_artist)
        self.form_layout.addRow('Genero:', self.display_genre)
        self.form_layout.addRow('Fecha:', self.display_release_date)
        self.form_layout.addRow('Publicacion:', self.display_publisher)
        self.left_widget_bot.setLayout(self.form_layout)

    #crear barra de tareas y botones

    def _create_buttons(self):
        self.close_button = QPushButton('Cerrar', parent=self.right_widget)
        self.close_button.setGeometry(220, 350, 70, 30)
        self.save_button = QPushButton('Guardar', parent=self.right_widget)
        self.save_button.setGeometry(300, 350, 70, 30)

    def _create_tool_bar(self):
        self.tools = QToolBar()
        self.addToolBar(self.tools)

    def _create_status_bar(self):
        status = QStatusBar()
        status.showMessage("Activo")
        self.setStatusBar(status)

    #crear el texto del display

    def set_display_text(self, file_path, title, artist, album, album_artist,
                         genre, track, release_date, bpm, publisher):
        self.file_path_display.setText(file_path)
        self.display_title.setText(title)
        self.display_artist.setText(artist)
        self.display_album.setText(album)
        self.display_album_artist.setText(album_artist)
        self.display_genre.setText(str(genre))
        self.display_track.setText(str(track))
        self.display_release_date.setText(str(release_date))
        self.display_bpm.setText(str(bpm))
        self.display_publisher.setText(publisher)

    def display_text(self):
        return self.display_title.text(), self.display_artist.text(
        ), self.display_album.text(), self.display_album_artist.text(
        ), self.display_genre.text(), self.display_track.text(
        ), self.display_release_date.text(), self.display_bpm.text(
        ), self.display_publisher.text()
Esempio n. 6
0
class UIComicInfoWidget(QWidget):
    load_chapter_list_signa = QtCore.pyqtSignal(ChapterInfo)
    load_download_task_signa = QtCore.pyqtSignal(DownloadTask)

    def __init__(self, comic_info: ComicInfo, down_v_box_layout: QVBoxLayout):
        super().__init__()
        self.comic_info = comic_info
        self.down_v_box_layout = down_v_box_layout
        self.img_label = QLabel(self)
        self.img_label.setScaledContents(True)
        img = QImage.fromData(comic_info.cover)
        w, h = image_resize(comic_info.cover, width=200)
        self.img_label.resize(QtCore.QSize(w, h))
        self.img_label.setGeometry(10, 10, w, h)
        self.img_label.setPixmap(QPixmap.fromImage(img))
        # self.img_label.setPixmap(QtGui.QPixmap("/Users/bo/my/tmp/老夫子2/第1卷/1.jpg"))

        self.title = QLabel(self)
        self.title.setGeometry(220, 10, 100, 40)
        title_font = QtGui.QFont()
        title_font.setPointSize(16)
        title_font.setBold(True)
        title_font.setUnderline(True)
        self.title.setFont(title_font)
        self.title.setText(comic_info.title)
        self.title.setWordWrap(True)

        info_font = QtGui.QFont()
        info_font.setPointSize(14)
        # 作者
        self.author = QLabel(self)
        self.author.setText("作者 : " + comic_info.author)
        self.author.setGeometry(220, 50, 150, 40)
        self.author.setWordWrap(True)
        self.author.setFont(info_font)
        # 状态
        self.status = QLabel(self)
        self.status.setText("更新状态 : " + comic_info.status)
        self.status.setGeometry(220, 90, 150, 40)
        self.status.setFont(info_font)

        # 热度
        self.heat = QLabel(self)
        self.heat.setText("热度 : " + str(comic_info.heat))
        self.heat.setGeometry(220, 130, 150, 40)
        self.heat.setFont(info_font)

        # 类型
        self.tip = QLabel(self)
        self.tip.setText("类型 : " + comic_info.tip)
        self.tip.setGeometry(220, 170, 150, 40)
        self.tip.setWordWrap(True)
        self.tip.setFont(info_font)

        # web
        self.domain = QLabel(self)
        self.domain.setText(f"查看原网页 : {comic_info.domain}")
        self.domain.setText(f'查看原网页 : <a href="{comic_info.url}">{comic_info.domain}</a>')
        self.domain.setGeometry(220, 210, 150, 40)
        self.domain.setOpenExternalLinks(True)
        self.domain.setFont(info_font)

        # 描述
        self.describe = QLabel(self)
        self.describe.setText("  " + comic_info.describe)
        self.describe.setGeometry(10, 320, 350, 330)
        self.describe.setWordWrap(True)
        # 对齐方式
        self.describe.setAlignment(
            QtCore.Qt.AlignmentFlag.AlignLeading | QtCore.Qt.AlignmentFlag.AlignLeft | QtCore.Qt.AlignmentFlag.AlignTop)

        # 章节列表,创建一个区域

        self.searchHBoxLayout = QHBoxLayout()
        # self.searchHBoxLayout.addSpacing()
        self.searchGroupBox = QGroupBox()
        self.searchGroupBox.setLayout(self.searchHBoxLayout)

        self.searchScroll = QScrollArea(self)
        self.searchScroll.setGeometry(370, 10, 574, 590)
        self.searchScroll.setWidget(self.searchGroupBox)
        self.searchScroll.setWidgetResizable(True)

        # 全选
        self.check_all = QCheckBox(self)
        self.check_all.setText("全选")
        self.check_all.setGeometry(700, 610, 100, 20)
        self.check_all.stateChanged.connect(self.check_all_fun)

        # 下载
        self.down_button = QPushButton(self)
        self.down_button.setText("下载")
        self.down_button.setGeometry(780, 605, 50, 30)

        self.down_button.clicked.connect(self.download_button_click)

        self.load_chapter_list_signa.connect(self.load_chapter)
        self.load_download_task_signa.connect(self.download_callback)

        # 调用对应的service的接口,获取章节列表
        constant.SERVICE.chapter(comic_info, self.load_chapter_list_signa.emit)

    i = 0
    searchVBoxLayout: QVBoxLayout
    check_box_list: List[QCheckBox] = []

    def check_all_fun(self):
        for check_box in self.check_box_list:
            check_box.setChecked(self.check_all.isChecked())

    def download_callback(self, task: DownloadTask):
        widget = DownLoadTaskWidget(task)
        self.down_v_box_layout.addWidget(widget)

    def download_button_click(self):
        flag = False
        for check_box in self.check_box_list:
            if check_box.isChecked():
                constant.SERVICE.parse_image(self.comic_info, check_box.property("chapter_info"),
                                             self.load_download_task_signa.emit)
                if not flag:
                    QMessageBox.information(self, "下载通知", "正在解析选中章节", QMessageBox.StandardButton.Yes)
                    flag = True

    def load_chapter(self, chapter_info: ChapterInfo):
        if self.i % 26 == 0:
            self.searchVBoxLayout = QVBoxLayout()
            self.searchVBoxLayout.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)  # 对齐方式,研究了3个小时 o(╥﹏╥)o
            self.searchHBoxLayout.addLayout(self.searchVBoxLayout)

        check_box = QCheckBox()
        self.check_box_list.append(check_box)
        check_box.setText(chapter_info.title)
        check_box.setProperty("chapter_info", chapter_info)
        task = constant.downloaded_task_map.get(chapter_info.url)
        if task and task.status == -1:
            check_box.setStyleSheet('color:red')
            check_box.setChecked(True)

        self.searchVBoxLayout.addWidget(check_box)
        self.i += 1