class Ui_MainWindow(object): def setupUi(self, windget): windget.resize(850, 700) self.h1_layout = QHBoxLayout() self.h2_layout = QHBoxLayout() self.h3_layout = QHBoxLayout() self.h4_layout = QHBoxLayout() self.h5_layout = QHBoxLayout() self.h6_layout = QHBoxLayout() self.h7_layout = QHBoxLayout() self.h8_layout = QHBoxLayout() self.h9_layout = QHBoxLayout() self.h10_layout = QHBoxLayout() self.h11_layout = QHBoxLayout() self.all_v_layout = QVBoxLayout() self.statusbar = QtWidgets.QStatusBar() self.toolbar = QToolBar() self.menubar = QMenuBar() self.menubar.setStyleSheet( "QMenuBar{background-color: rgb(240, 240, 240)}") self.menubar.setFixedSize(870, 22) self.menubar.setMaximumSize(9999, 9999) self.h4_layout.addWidget(self.menubar) self.h5_layout.addWidget(self.toolbar) self.file_Menu = self.menubar.addMenu("文件") self.file_compare = QAction(QIcon('exit.png'), '&对比') self.file_compare.setShortcut('Shift+F10') self.file_compare.setStatusTip('对比文件') self.file_Menu.addAction(self.file_compare) self.file_save = QAction(QIcon('exit.png'), '&保存') self.file_save.setShortcut('Ctrl+s') self.file_save.setStatusTip('保存备案比对结果') self.file_Menu.addAction(self.file_save) self.file_open = QAction(QIcon('exit.png'), '&打开') self.file_open.setShortcut('') self.file_open.setStatusTip('打开备案比对结果') self.file_Menu.addAction(self.file_open) self.select_Menu = self.menubar.addMenu("选择") self.select_backup = QAction(QIcon('exit.png'), '&备案文件') self.select_backup.setShortcut('') self.select_backup.setStatusTip('选择备案文件') self.select_Menu.addAction(self.select_backup) self.select_source = QAction(QIcon('exit.png'), '&待对比文件') self.select_source.setShortcut('') self.select_source.setStatusTip('选择待对比文件') self.select_Menu.addAction(self.select_source) self.record_Menu = self.menubar.addMenu("对比记录") self.win_Menu = self.menubar.addMenu("窗口") self.win_max = QAction(QIcon('exit.png'), '&窗口最大化') self.win_max.setShortcut('') self.win_max.setStatusTip('最大化窗口') self.win_Menu.addAction(self.win_max) self.win_min = QAction(QIcon('exit.png'), '&窗口最小化') self.win_min.setShortcut('') self.win_min.setStatusTip('最小化窗口') self.win_Menu.addAction(self.win_min) self.user_Menu = self.menubar.addMenu("用户") self.user_out = QAction(QIcon('exit.png'), '&用户信息') self.user_out.setShortcut('') self.user_out.setStatusTip('注销用户') self.user_Menu.addAction(self.user_out) # self.user_out.triggered.connect(self.sign_out) # # def sign_out(self): # self.close() # dialog = logindialog() # if dialog.exec_() == QDialog.Accepted: # the_window = Main() # self.windowList.append(the_window) # 这句一定要写,不然无法重新登录 # the_window.show() self.quit_Menu = self.menubar.addMenu("退出") self.quit_app = QAction(QIcon('exit.png'), '&退出') self.quit_app.setShortcut('Ctrl+Q') self.quit_app.setStatusTip('退出') self.quit_Menu.addAction(self.quit_app) self.help_Menu = self.menubar.addMenu("帮助") self.help_app = QAction(QIcon('exit.png'), '&帮助') self.help_app.setShortcut('') self.help_app.setStatusTip('帮助信息') self.help_Menu.addAction(self.help_app) self.groupbox_1 = QGroupBox('备案文件') # 1 # self.groupbox_1.setMaximumSize(9999,9999) self.groupbox_2 = QGroupBox('待对比文件') # self.groupbox_2.setMaximumSize(9999,9999) self.groupbox_3 = QGroupBox('比对结果') self.groupbox_4 = QGroupBox() self.groupbox_4.setLayout(self.h5_layout) self.h11_layout.addWidget(self.groupbox_4) self.toolbutton = QtWidgets.QToolButton() self.toolbar.setMovable(False) self.toolbutton.setAutoRaise(True) self.toolbutton.setIcon(QIcon('素材/开始.png')) self.toolbutton.setText("开始") self.toolbutton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.toolbutton2 = QtWidgets.QToolButton() # self.toolbutton2.setCheckable(False) self.toolbutton2.setAutoRaise(True) self.toolbutton2.setIcon(QIcon('素材/文档.png')) self.toolbutton2.setText("保存") self.toolbutton2.setToolTip("保存比对结果") # 在工具栏ToolBar里同时添加图标和文字,并设置图标和文字的相对位置;若没有下面的一行或多行代码,则只显示图标或文字。 self.toolbutton2.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.comboBox = QtWidgets.QComboBox() self.comboBox.addItem("") self.comboBox.addItem("") self.toolbutton3 = QtWidgets.QToolButton() # self.toolbutton3.setCheckable(False) self.toolbutton3.setAutoRaise(True) self.toolbutton3.setIcon(QIcon('素材/关闭.png')) self.toolbutton3.setText("退出") self.toolbutton3.setToolTip("退出") # 在工具栏ToolBar里同时添加图标和文字,并设置图标和文字的相对位置;若没有下面的一行或多行代码,则只显示图标或文字。 self.toolbutton3.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.toolbutton4 = QtWidgets.QToolButton() # self.toolbutton3.setCheckable(False) self.toolbutton4.setAutoRaise(True) self.toolbutton4.setIcon(QIcon('素材/下载.png')) self.toolbutton4.setText("下载备案") self.toolbutton4.setToolTip("下载备案文件") # 在工具栏ToolBar里同时添加图标和文字,并设置图标和文字的相对位置;若没有下面的一行或多行代码,则只显示图标或文字。 self.toolbutton4.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.toolbutton5 = QtWidgets.QToolButton() # self.toolbutton3.setCheckable(False) self.toolbutton5.setAutoRaise(True) self.toolbutton5.setIcon(QIcon('素材/上传.png')) self.toolbutton5.setText("上传结果") self.toolbutton5.setToolTip("上传代码比对结果") # 在工具栏ToolBar里同时添加图标和文字,并设置图标和文字的相对位置;若没有下面的一行或多行代码,则只显示图标或文字。 self.toolbutton5.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.toolbar.addWidget(self.toolbutton) self.toolbar.addSeparator() self.toolbar.addSeparator() self.toolbar.addWidget(self.toolbutton4) self.toolbar.addSeparator() self.toolbar.addSeparator() self.toolbar.addWidget(self.comboBox) self.toolbar.addSeparator() self.toolbar.addSeparator() self.toolbar.addWidget(self.toolbutton2) self.toolbar.addSeparator() self.toolbar.addSeparator() self.toolbar.addWidget(self.toolbutton5) self.toolbar.addSeparator() self.toolbar.addSeparator() self.toolbar.addWidget(self.toolbutton3) self.backup_label = QtWidgets.QLabel() self.backup_label.setFixedSize(375, 25) self.backup_label.setFont(QFont( "Roman times", 11, )) self.backup_label.setText("请选择合适的备案文件") self.backup_button = QtWidgets.QPushButton() self.backup_button.setFixedSize(30, 30) self.backup_button.setIcon(QIcon("素材/文件夹.png")) self.source_label = QtWidgets.QLabel() self.source_label.setFixedSize(375, 25) self.source_label.setFont(QFont( "Roman times", 11, )) self.source_label.setText("请选择合适的待比对文件") self.source_button = QtWidgets.QPushButton() self.source_button.setFixedSize(30, 30) self.source_button.setIcon(QIcon("素材/文件夹.png")) self.h6_layout.addWidget(self.backup_label) self.h6_layout.addWidget(self.backup_button) self.h6_layout.addWidget(self.source_label) self.h6_layout.addWidget(self.source_button) self.backup_win = QtWidgets.QWidget() self.backup_win.setFixedSize(420, 300) # self.backup_win.resize(500, 300) # self.backup_win.setMaximumSize(9999,9999) # self.backup_win.resize(420,300) self.source_win = QtWidgets.QWidget() self.source_win.setFixedSize(420, 300) # self.source_win.setMaximumSize(9999,9999) self.h1_layout.addWidget(self.backup_win) self.groupbox_1.setLayout(self.h1_layout) self.h2_layout.addWidget(self.source_win) self.groupbox_2.setLayout(self.h2_layout) self.backup_model = QFileSystemModel() self.backup_tree = QTreeView(self.backup_win) self.backup_model.setReadOnly(True) self.backup_tree.setGeometry(0, 0, 400, 290) self.source_model = QFileSystemModel() self.source_tree = QTreeView(self.source_win) self.source_model.setReadOnly(True) self.source_tree.setGeometry(0, 0, 400, 290) self.textBrowser = QtWidgets.QTextBrowser() self.textBrowser.setFixedSize(800, 250) self.textBrowser.setMaximumSize(9999, 9999) self.h7_layout.addWidget(self.textBrowser) self.groupbox_3.setLayout(self.h7_layout) self.pbar = QtWidgets.QProgressBar() self.pbar.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignVCenter) self.h9_layout.addWidget(self.pbar) # self.statusbar = QtWidgets.QStatusBar() self.h10_layout.addWidget(self.statusbar) self.h3_layout.addWidget(self.groupbox_1) self.h3_layout.addWidget(self.groupbox_2) # self.h3_layout.setSpacing(0) self.h8_layout.addWidget(self.groupbox_3) self.all_v_layout.addLayout(self.h4_layout) self.all_v_layout.addLayout(self.h11_layout) self.all_v_layout.addLayout(self.h6_layout) self.all_v_layout.addLayout(self.h3_layout) self.all_v_layout.addLayout(self.h8_layout) self.all_v_layout.addLayout(self.h9_layout) self.all_v_layout.addLayout(self.h10_layout) windget.setLayout(self.all_v_layout) self.retranslateUi(windget) def retranslateUi(self, windget): _translate = QtCore.QCoreApplication.translate windget.setWindowTitle(_translate("MainWindow", "电表代码对比软件")) windget.setWindowIcon(QIcon('素材/电网.ico')) self.comboBox.setItemText(0, _translate("MainWindow", "直接对比方式")) self.comboBox.setItemText(1, _translate("MainWindow", "数字签名对比方式"))
class Ui(QWidget): """ 窗体主模块 """ def __init__(self): super(Ui, self).__init__() self.__init_main__() self.__init_ui__() # 其他窗口依赖项 self.__init_status__() self.__init_meau_main__() self.__init_home__() self.__init_var__() # 包含时间关联,最后初始化 self.btn_home_audit.clicked.connect(self.no_compele) self.btn_home_kgraph.clicked.connect(self.no_compele) self.setAcceptDrops(True) def no_compele(self): QMessageBox.information(self, '提示', '还没有开发呢') def __init_ui__(self, *args): self.resize(715, 458) self.setFont(QFont('YaHei', 10)) self.setWindowTitle('Toolbox') # self.setWindowIcon(QIcon('{}/Ico/toolbox.png'.format(ROOTDIR).format(ROOTDIR))) f_ico = open(r'{}/Ico/toolbox.png'.format(ROOTDIR).format(ROOTDIR), 'rb') pix = QPixmap() pix.loadFromData(f_ico.read()) # 读取文件流生成图标 self.setWindowIcon(QIcon(pix)) self.setMouseTracking(True) # self.setWindowOpacity(0.8) self.setStyleSheet('*{background-color: #FFFFFF}') # self.setWindowFlags(Qt.WindowStaysOnTopHint) # 窗口置顶 # 总布局 self.glayout_main = QGridLayout() self.glayout_main.setSpacing(0) self.glayout_main.setContentsMargins(0, 0, 0, 0) # 为窗体添加布局 self.setLayout(self.glayout_main) # C = QColorDialog().getColor() def eventFilter(self, watched, event): print(event.type(), event.__doc__) if watched == self.label1: # 只对label1的点击事件进行过滤,重写其行为,其他的事件会被忽略 if event.type() == QEvent.MouseButtonPress: # 这里对鼠标按下事件进行过滤,重写其行为 mouseEvent = QMouseEvent(event) if mouseEvent.buttons() == Qt.LeftButton: self.LabelState.setText("按下鼠标左键") elif mouseEvent.buttons() == Qt.MidButton: self.LabelState.setText("按下鼠标中间键") elif mouseEvent.buttons() == Qt.RightButton: self.LabelState.setText("按下鼠标右键") '''转换图片大小''' transform = QTransform() transform.scale(0.5, 0.5) tmp = self.image1.transformed(transform) self.label1.setPixmap(QPixmap.fromImage(tmp)) if event.type( ) == QEvent.MouseButtonRelease: # 这里对鼠标释放事件进行过滤,重写其行为 self.LabelState.setText("释放鼠标按钮") self.label1.setPixmap(QPixmap.fromImage(self.image1)) return QWidget.eventFilter(self, watched, event) # 其他情况会返回系统默认的事件处理方法。 def __init_main__(self): self.APPID = '17621214' self.APIKEY = 'kUaRn85Ljekp2AapOZaSMNIe' self.SECRETKEY = 'SVABkvSEzMGMhRkFqV0gxCO19Aqwo4gK' self.user_info_all_dict = {} path = r'{}/Config/config'.format(ROOTDIR) if os.path.exists(path): with open(path, 'r') as f_config: data = self.read_info_from_file(f_config.read()) if data: data = json.loads(data) if 'APPID' and 'APIKEY' and 'SECRETKEY' in data.keys(): self.user_info_all_dict.update(data) self.APPID = self.user_info_all_dict.get('APPID') self.APIKEY = self.user_info_all_dict.get('APIKEY') self.SECRETKEY = self.user_info_all_dict.get( 'SECRETKEY') os.remove(path) self.user_info_all_dict['APPID'] = self.APPID self.user_info_all_dict['APIKEY'] = self.APIKEY self.user_info_all_dict['SECRETKEY'] = self.SECRETKEY self.userinfo_change_save() def read_info_from_file(self, fb, key=None): if not key: key = 'BNM123456' try: data = decrypt(int(fb), key) return data except Exception as e: return None # APPID = '17621214' #152 # APIKEY = 'kUaRn85Ljekp2AapOZaSMNIe' # SECRETKEY = 'SVABkvSEzMGMhRkFqV0gxCO19Aqwo4gK' @catch_except def userinfo_change_save(self, *args): with open(r'Config\config', 'w') as f: key = 'BNM123456' data = json.dumps(self.user_info_all_dict) data_int, k = encrypt(data, key) f.write(data_int.__str__()) # print('保存完成') def time_show_out(self, *args): self.time_now = time.strftime('%Y-%m-%d %a %H:%M:%S', time.localtime()) self.label_top_center.setText(self.time_now) # self.btn_0_openfolder.setText(self.time_now) def __init_var__(self, *args): # 时间 self.timer_top = QTimer() self.timer_top.timeout.connect(self.time_show_out) self.timer_top.start(100) # 多线程执行程序 self.Outter_Run = Outter_Run() self.Outter_Run.sign.connect(self.Outter_Run_sign_deal) def __init_meau_main__(self, *args): """ 主菜单栏 :return: """ # 窗口顶部主布局 self.glayout_top = QGridLayout() self.glayout_main.addLayout(self.glayout_top, 1, 0, Qt.AlignTop) # 菜单栏 左侧 self.glayout_meau = QGridLayout() self.glayout_top.addLayout(self.glayout_meau, 0, 0) self.meau_main = QMenuBar() self.meau_main.setFixedSize(100, 30) # self.meau_main.setWindowIcon(QIcon('{}/Ico/bg_img.png'.format(ROOTDIR))) self.glayout_meau.addWidget(self.meau_main, 0, 0, 1, 1) self.set_btn = QAction('设置', self.meau_main) self.set_btn.setText('设置') # meau.triggered.connect(self._test_ui) self.meau_main.addAction(self.set_btn) self.floder_btn = QAction('文件', self.meau_main) self.floder_btn.setText('文件') self.floder_btn.setToolTip('打开所有用户数据保存文件夹') self.floder_btn.triggered.connect(self.floder_btn_triggered) # meau.triggered.connect(self._test_ui) self.meau_main.addAction(self.floder_btn) # 返回按钮等 self.btn_top_back = QToolButton() self.btn_top_back.setIcon( QIcon('{}/Ico/back.png'.format(ROOTDIR).format(ROOTDIR))) self.btn_top_back.setStyleSheet('*{width:22px;height:22px;border:0}') self.glayout_meau.addWidget(self.btn_top_back, 0, 1, 1, 1) self.btn_top_forward = QToolButton() self.btn_top_forward.setIcon( QIcon('{}/Ico/forward.png'.format(ROOTDIR).format(ROOTDIR))) self.btn_top_forward.setStyleSheet( '*{width:22px;height:22px;border:0}') self.glayout_meau.addWidget(self.btn_top_forward, 0, 2, 1, 1) self.btn_top_forward.setVisible(False) self.btn_top_back.setVisible(False) # 顶部中心 self.glayout_top_center = QGridLayout() self.glayout_top.addLayout(self.glayout_top_center, 0, 1) self.label_top_center = QLabel() self.glayout_top_center.addWidget(self.label_top_center, 0, 1, 1, 1) self.label_top_center.setFixedHeight(25) # self.label_top_center.setMouseTracking(True) self.label_top_center.setAlignment(Qt.AlignCenter) # 顶部右侧 self.glayout_top_right = QGridLayout() self.glayout_top.addLayout(self.glayout_top_right, 0, 2) self.label_top_right = ScrollLabel() self.label_top_right.setObjectName('label_top_right') # self.label_top_right.setText('label') self.label_top_right.setFixedWidth(150) self.label_top_right.setAlignment(Qt.AlignCenter) # self.label_top_show.setAutoFillBackground(True) self.label_top_right.setMouseTracking(True) self.glayout_top_right.addWidget(self.label_top_right, 0, 0, 1, 1) self.meau_widgets = [ self.meau_main, self.btn_top_back, self.btn_top_forward, self.label_top_center, self.label_top_right ] color = (TopColor, random_color(mode='font'), random_color(mode='background'), random_color(mode='font')) # self.meau_main.setStyleSheet("*{background-color:%s;color:%s;border:0;font:YaHei;} :pressed{background-color:%s;color:%s;}" % color) for widget in self.meau_widgets: widget.setFixedHeight(25) widget.setStyleSheet( "*{background-color:%s;color:%s;border:0;font:YaHei;} :pressed{background-color:%s;color:%s;}" % color) self.btn_top_forward.clicked.connect(self.btn_top_forward_clicked) self.btn_top_back.clicked.connect(self.btn_top_back_clicked) def floder_btn_triggered(self): os.system('start explorer "{}\Record"'.format(ROOTDIR)) @catch_except def btn_top_back_clicked(self, *args): """返回按钮实际实现方法""" # print('back',func_before,func_historys) if func_before: index = func_historys.index(func_before) if func_historys[index - 1]: layout_dele(func_historys[index - 1])(self, *args) if func_historys[index]: self.btn_top_forward.setVisible(True) else: self.btn_top_forward.setVisible(False) # 底部状态栏清空 self.pbar_bottom.reset() self.label_status_left.clear() self.label_status_right.clear() # self.label_top_right.setText('') @catch_except def btn_top_forward_clicked(self, *args): """实现窗口向前,注意子窗口调用函数中应该不包含sender()初始化,否则将导致窗口向前失效""" # global func_historys # print('forward',func_before) if func_before: index = func_historys.index(func_before) if func_historys[index + 1]: layout_dele(func_historys[index + 1])(self) # func_historys[index+1](self) self.btn_top_back.setVisible(True) def leave_home_event(self, *args): self.btn_top_back.setVisible(True) def __init_status__(self, *args): self.glayout_status = QGridLayout() self.glayout_main.addLayout(self.glayout_status, 3, 0, Qt.AlignBottom) self.label_status_left = QLabel() # self.label_status_left.setText('这是状态栏') self.label_status_left.setFixedWidth(200) self.label_status_left.setAlignment(Qt.AlignCenter) self.glayout_status.addWidget(self.label_status_left, 0, 0, 1, 1) self.pbar_bottom = QProgressBar() self.pbar_bottom.setObjectName('bottom_par') self.pbar_bottom.setAlignment(Qt.AlignCenter) self.pbar_bottom.setRange(0, 100) self.glayout_status.addWidget(self.pbar_bottom, 0, 1, 1, 1) self.label_status_right = QLabel() # self.label_status_right.setText('这是状态栏') self.label_status_right.setAlignment(Qt.AlignCenter) self.label_status_right.setFixedWidth(200) self.glayout_status.addWidget(self.label_status_right, 0, 2, 1, 1) self.status_widgets = [ self.label_status_right, self.label_status_left, self.pbar_bottom ] color = (random_color(mode='background'), random_color(mode='font'), random_color(mode='background'), random_color(mode='font')) for widget in self.status_widgets: widget.setStyleSheet( "*{background-color:%s;color:%s;border:0;height:25px;font:YaHei;} :pressed{background-color:%s;color:%s;}" % color) def Outter_Run_sign_deal(self, p): self.pbar_bottom.setValue(p) def __init_home__(self, *args): """ 主页布局 :return: """ self.glayout_home = QGridLayout() self.glayout_home.setObjectName('grade_1') self.glayout_main.addLayout(self.glayout_home, 2, 0, Qt.AlignCenter) self.glayout_home.setSpacing(int(self.width() * 0.2 / 6)) self.glayout_home.setContentsMargins(10, 10, 10, 10) # btn及其参数 self.home_btns = [] self.btn_home_voice = QPushButton() self.home_btns.append([ self.btn_home_voice, 0, 0, 1, 1, '语音技术', 'btn_home_voice', 80, 60, '{}/Ico/voice.png'.format(ROOTDIR) ]) self.btn_home_face = QPushButton() self.home_btns.append([ self.btn_home_face, 0, 1, 1, 1, '人脸识别', 'btn_home_face', 80, 60, '{}/Ico/face.png'.format(ROOTDIR) ]) self.btn_home_bodyays = QPushButton() self.home_btns.append([ self.btn_home_bodyays, 0, 2, 1, 1, '人体分析', 'btn_home_bodyays', 80, 60, '{}/Ico/bodyays.png'.format(ROOTDIR) ]) self.btn_home_ocr = QPushButton() self.home_btns.append([ self.btn_home_ocr, 0, 3, 1, 1, '文字识别', 'btn_home_ocr', 80, 60, '{}/Ico/ocr.png'.format(ROOTDIR) ]) self.btn_home_imgrec = QPushButton() self.home_btns.append([ self.btn_home_imgrec, 1, 0, 1, 1, '图像识别', 'btn_home_imgrec', 80, 60, '{}/Ico/imgrec.png'.format(ROOTDIR) ]) self.btn_home_imgsearch = QPushButton() self.home_btns.append([ self.btn_home_imgsearch, 1, 1, 1, 1, '图像搜索', 'btn_home_imgsearch', 80, 60, '{}/Ico/imgsearch.png'.format(ROOTDIR) ]) self.btn_home_imgup = QPushButton() self.home_btns.append([ self.btn_home_imgup, 1, 2, 1, 1, '图像效果增强', 'btn_home_imgup', 80, 60, '{}/Ico/imgup.png'.format(ROOTDIR) ]) self.btn_home_nlp = QPushButton() self.home_btns.append([ self.btn_home_nlp, 1, 3, 1, 1, '自然语言处理', 'btn_home_nlp', 80, 60, '{}/Ico/nlp.png'.format(ROOTDIR) ]) self.btn_home_kgraph = QPushButton() # self.home_btns.append([self.btn_home_kgraph,2,0,1,1,'知识图谱','btn_home_kgraph',80,60,'{}/Ico/kgraph.png'.format(ROOTDIR)]) self.btn_home_audit = QPushButton() # self.home_btns.append([self.btn_home_audit,2,1,1,1,'内容审核','btn_home_audit',80,60,'{}/Ico/audit.png'.format(ROOTDIR)]) self.btn_home_music = QPushButton() # self.home_btns.append([self.btn_home_music,2,2,1,1,'音乐','btn_home_music',80,60,'{}/Ico/music.png'.format(ROOTDIR)]) self.btn_home_screen = QPushButton() self.home_btns.append([ self.btn_home_screen, 2, 1, 1, 1, '录屏', 'btn_home_music', 80, 60, r'{}/Ico/record.png'.format(ROOTDIR) ]) self.btn_home_video = QPushButton() self.home_btns.append([ self.btn_home_video, 2, 0, 1, 1, '视频', 'btn_home_video', 80, 60, '{}/Ico/video.png'.format(ROOTDIR) ]) # 为btn设置参数 for btn in self.home_btns: list( map( lambda v1, v2, v3, v4, v5: self.glayout_home.addWidget( v1, v2, v3, v4, v4), [btn[0]], [btn[1]], [btn[2]], [btn[3]], [btn[4]])) btn[0].setObjectName(btn[6]) # btn[0].setText(btn[5]) # btn[0].setFixedSize(btn[7],btn[8]) # 设置css样式表 css = ":hover{background-color:%s;}" \ "QPushButton{background-color:%s;}" \ "QPushButton:pressed{background-color:%s;}" \ "QToolTip{color:%s;font:Yahei;font-size:14px}" %(random_color(),random_color(),random_color(),random_color()) # border:0px #background-color:%s; random_color(), btn[0].setStyleSheet(css) btn[0].setToolTip(btn[5]) btn[0].setIcon(QIcon(btn[9])) btn[0].resize(btn[7], btn[8]) # btn[0].setIconSize(QSize(btn[7], btn[8])) h = self.height() * 0.8 / 5 w = self.width() * 0.8 / 4 if h > 100: h = 100 if w > h * 1.3: w = h * 1.3 if h > w / 1.3: h = w / 1.3 btn[0].setIconSize(QSize(w, h)) # 掩膜,不规则图 # pix = QPixmap(btn[9]) # btn[0].setFixedSize(pix.size()) # btn[0].setMask(pix.mask()) # self.btn_home_voice.clicked.connect(self._init_voice_ui__) btn[0].clicked.connect(self.leave_home_event) self._home_reload() @layout_dele def _home_reload(self, *args): # 更新forward btn if func_historys[2]: self.btn_top_forward.setVisible(True) else: self.btn_top_forward.setVisible(False) self.btn_top_back.setVisible(False) for btn in self.home_btns: btn[0].setVisible(True) return self.glayout_home def bottom_pbar_changed(self, *args): pass def set_bottom_pabr_value(self, value=None): self.Outter_Run.value = list(range(101)) self.Outter_Run.start() def dict_get_value(self, dicts, value='', grade=-1): """遍历字典并返回所有数据""" grade += 1 if isinstance(dicts, dict): for k, v in dicts.items(): if isinstance(v, dict): value += '{}{}:\n'.format(' ' * grade, k) value = self.dict_get_value(v, value, grade) elif isinstance(v, tuple) or isinstance(v, list): value += "{}{}:\n".format(' ' * grade, k) value = self.list_get_value(v, value, grade) else: value += '{}{}:{}\n'.format(' ' * grade, k, v) elif isinstance(dicts, tuple) or isinstance(dicts, list): value = self.list_get_value(dicts, value, grade) else: value += '{}{}\n'.format(' ' * grade, dicts) return value def list_get_value(self, lists, value='', grade=-1): """遍历列表并返回所有数据""" if isinstance(lists, tuple) or isinstance(lists, list): for l in lists: if isinstance(lists, tuple) or isinstance(lists, list): value = self.list_get_value(l, value, grade) elif isinstance(l, dict): value = self.dict_get_value(l, value, grade) else: if str(l).replace('\s', '').replace('\n', ''): value += "{}{}:\n".format(' ' * grade, l) else: value += "{}{}\n".format(' ' * grade, l) elif isinstance(lists, dict): value = self.dict_get_value(lists, value, grade) else: if str(lists).replace('\n', '').replace('\t', ''): value += "{}{}:\n".format(' ' * grade, lists) else: value += "{}{}\n".format(' ' * grade, lists) return value def dict_get_value_by_key(self, dicts, key, value=''): """遍历字典并返回指定键值的所有数据""" def list_get_dict(lists, _key, _value=''): """遍历列表并返回所有数据""" if isinstance(lists, tuple) or isinstance(lists, list): for l in lists: if isinstance(lists, tuple) or isinstance(lists, list): _value = list_get_dict(l, _key, _value) elif isinstance(l, dict): _value = self.dict_get_value_by_key(l, _key, _value) elif isinstance(lists, dict): _value = self.dict_get_value_by_key(lists, _key, _value) return _value if isinstance(dicts, dict): if key in dicts.keys(): value += dicts.get(key) + '\n' for k, v in dicts.items(): if isinstance(v, dict): value = self.dict_get_value_by_key(v, key, value) elif isinstance(v, tuple) or isinstance(v, list): value = list_get_dict(v, key, value) elif isinstance(dicts, tuple) or isinstance(dicts, list): value = list_get_dict(dicts, key, value) return value @catch_except def text_to_newline(self, text, length, temp='', *args): if len(text) > length: temp += text[:length] + '\r\n' return self.text_to_newline(text[length:], length, temp) else: temp += text print(temp) return temp def resizeEvent_ui(self, a0: QtGui.QResizeEvent) -> None: value = int(self.width() * 0.2 / 6) self.glayout_home.setSpacing(value) pass def paintEvent_main(self, a0: QtGui.QPaintEvent) -> None: # 背景 painter = QPainter(self) painter.drawPixmap(self.rect(), QPixmap('{}/Ico/bg_img.png'.format(ROOTDIR))) def dirs_to_files(self, path): my_files = [] if os.path.isfile(path): my_files.append(path) elif os.path.isdir(path): alls = list(os.walk(path)) for files in alls: for index, file in enumerate(files[2]): filepath = r'{}\{}'.format(files[0], file) my_files.append(filepath) if my_files: return my_files return False def setVisible_by_layout(self, layout, state): """隐藏或显示布里的控件""" for i in range(layout.count()): widget = layout.itemAt(i) if widget.__doc__.startswith('QGridLayout'): self.setVisible_by_layout(widget, state) else: widget.widget().setVisible(state)