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)
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)
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()
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