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_()
QT Pyside2常用按钮控件方法(四)
于 2022-06-11 13:16:37 首次发布