QT Pyside2常用按钮控件方法(四)

from base_control.action_class import Action
from PySide2.QtWidgets import QApplication,QMessageBox,QProgressBar
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
from time import sleep
from threading import Thread
from PySide2.QtWidgets import QFileDialog

class Control(Action):

    def __init__(self):

        ui_file = QFile("./practice.ui")
        ui_file.open(QFile.ReadOnly)
        ui_file.close()

        # 从文件中加载UI定义
        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button , self.ui.textEdit
        self.ui = QUiLoader().load(ui_file)
        self.ui.progressBar.setVisible(False)
        self.flag = False
        self.pushButton()
        # self.myProgress = QProgressBar(self.ui)

    def pushButton(self):
        self.ui.pushButton.clicked.connect(self.handleClick)

    def progressBar(self):
        '''
        进度条比较特殊,可以使用deasigner来设计,也可以使用python代码生成,不过如果要考虑实现一些自己想要的效果,试试两个结合使用
        1.如果需要将setRange(0,0)如此设置,则进度条希不显示百分比则显示,加载中样式。
        2.setVisible()设置进度条是否展示
        :return:
        '''
        # self.myProgress.resize(300, 20)
        # self.myProgress.move(240, 150)
        # 进度是 0 - 5,
        self.ui.progressBar.setVisible(True)  # 控制进度条是否展示,True展示,False不展示
        self.ui.progressBar.setRange(0, 10)
        # self.ui.myProgress.setRange(0, 5)
        self.flag=True
        for i in range(1,11):
            sleep(1)
            self.ui.progressBar.setValue(i)
        self.ui.progressBar.setVisible(False)
        self.flag = False

    def handleClick(self):
        '''
        使用多线程处理进度条
        :return:
        '''
        if self.flag:
            QMessageBox.warning(
                self.ui,
                '警告', '任务进行中,请等待完成')
            return
        worker = Thread(target=self.progressBar())
        worker.start()

    def fileButton(self):
        self.ui.pushButton_2.clicked.connect(self.getFile)

    def getFile(self):
        '''
        读取文件胡或者文件夹
        :return:
        '''
        filePath = QFileDialog.getExistingDirectory(self.ui, "选择存储路径")  #选择文件目录
        # 选择单个文件
        filePath, _ = QFileDialog.getOpenFileName(
            self.ui,  # 父窗口对象
            "选择你要上传的图片",  # 标题
            r"c:\\",  # 起始目录
            "图片类型 (*.png *.jpg *.bmp)"  # 选择类型过滤项,过滤内容在括号中
        )
        # 保存单个文件
        filePath, _ = QFileDialog.getSaveFileName(
            self.ui,  # 父窗口对象
            "保存文件",  # 标题
            r"d:\\data",  # 起始目录
            "json类型 (*.json)"  # 选择类型过滤项,过滤内容在括号中
        )
        self.ui.lineEdit.setText(filePath)  # 将文件目录填入输入框
        def fileButton(self):
        self.ui.pushButton_2.clicked.connect(self.getFile)


app = QApplication([])
stats = Control()
stats.ui.show()
stats.fileButton()
app.exec_()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值