pyqt5 实现在别的窗口弹出进度条

下面是关于“pyqt5 实现在别的窗口弹出进度条”的完整攻略。

实现在别的窗口弹出进度条

在PyQt5中,我们可以通过以下步骤在别的窗口弹出进度条:

  1. 导入必要的库

python
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton, QVBoxLayout
from PyQt5.QtCore import QThread, pyqtSignal

在上面的代码中,我们导入了QApplication、QWidget、QProgressBar、QPushButton、QVBoxLayout、QThread和pyqtSignal等必要的库。

  1. 创建一个新的线程

```python
class ProgressThread(QThread):
progress_signal = pyqtSignal(int)

   def __init__(self, parent=None):
       super(ProgressThread, self).__init__(parent)

   def run(self):
       for i in range(101):
           self.progress_signal.emit(i)
           self.msleep(50)

```

在上面的代码中,我们创建了一个名为ProgressThread的新线程,并定义了一个progress_signal信号。在run函数中,我们使用emit函数发射progress_signal信号,并使用msleep函数暂停50毫秒。

  1. 创建一个新的窗口

```python
class MainWindow(QWidget):
def init(self, parent=None):
super(MainWindow, self).init(parent)

       # 创建进度条和按钮
       self.progress_bar = QProgressBar()
       self.start_button = QPushButton('Start')

       # 创建垂直布局
       layout = QVBoxLayout()
       layout.addWidget(self.progress_bar)
       layout.addWidget(self.start_button)

       # 设置布局
       self.setLayout(layout)

       # 连接按钮的clicked信号到start函数
       self.start_button.clicked.connect(self.start)

   def start(self):
       # 创建新线程
       self.thread = ProgressThread()

       # 连接线程的progress_signal信号到update_progress函数
       self.thread.progress_signal.connect(self.update_progress)

       # 启动线程
       self.thread.start()

   def update_progress(self, value):
       # 更新进度条的值
       self.progress_bar.setValue(value)

```

在上面的代码中,我们创建了一个名为MainWindow的新窗口,并在窗口中创建了一个进度条和一个按钮。我们使用QVBoxLayout创建了一个垂直布局,并将进度条和按钮添加到布局中。我们还将按钮的clicked信号连接到start函数。在start函数中,我们创建了一个新线程,并将线程的progress_signal信号连接到update_progress函数。最后,我们启动了线程。在update_progress函数中,我们使用setValue函数更新进度条的值。

  1. 在别的窗口中弹出新窗口

```python
class OtherWindow(QWidget):
def init(self, parent=None):
super(OtherWindow, self).init(parent)

       # 创建按钮
       self.show_button = QPushButton('Show Progress')

       # 创建垂直布局
       layout = QVBoxLayout()
       layout.addWidget(self.show_button)

       # 设置布局
       self.setLayout(layout)

       # 连接按钮的clicked信号到show_progress函数
       self.show_button.clicked.connect(self.show_progress)

   def show_progress(self):
       # 创建新窗口
       self.progress_window = MainWindow()

       # 显示新窗口
       self.progress_window.show()

```

在上面的代码中,我们创建了一个名为OtherWindow的新窗口,并在窗口中创建了一个按钮。我们使用QVBoxLayout创建了一个垂直布局,并将按钮添加到布局中。我们还将按钮的clicked信号连接到show_progress函数。在show_progress函数中,我们创建了一个新窗口,并显示了新窗口。

示例说明

以下是两个示例:

  1. 在主窗口中弹出进度条窗口

```python
app = QApplication(sys.argv)

# 创建主窗口
main_window = QWidget()

# 创建按钮
show_button = QPushButton('Show Progress')

# 创建垂直布局
layout = QVBoxLayout()
layout.addWidget(show_button)

# 设置布局
main_window.setLayout(layout)

# 连接按钮的clicked信号到show_progress函数
show_button.clicked.connect(show_progress)

# 显示主窗口
main_window.show()

sys.exit(app.exec_())

def show_progress():
# 创建进度条窗口
progress_window = MainWindow()

   # 显示进度条窗口
   progress_window.show()

```

在上面的代码中,我们创建了一个名为main_window的主窗口,并在窗口中创建了一个按钮。我们使用QVBoxLayout创建了一个垂直布局,并将按钮添加到布局中。我们还将按钮的clicked信号连接到show_progress函数。在show_progress函数中,我们创建了一个新窗口,并显示了新窗口。

  1. 在别的窗口中弹出进度条窗口

```python
app = QApplication(sys.argv)

# 创建别的窗口
other_window = OtherWindow()

# 显示别的窗口
other_window.show()

sys.exit(app.exec_())

class OtherWindow(QWidget):
def init(self, parent=None):
super(OtherWindow, self).init(parent)

       # 创建按钮
       self.show_button = QPushButton('Show Progress')

       # 创建垂直布局
       layout = QVBoxLayout()
       layout.addWidget(self.show_button)

       # 设置布局
       self.setLayout(layout)

       # 连接按钮的clicked信号到show_progress函数
       self.show_button.clicked.connect(self.show_progress)

   def show_progress(self):
       # 创建进度条窗口
       self.progress_window = MainWindow()

       # 显示进度条窗口
       self.progress_window.show()

```

在上面的代码中,我们创建了一个名为other_window的别的窗口,并在窗口中创建了一个按钮。我们使用QVBoxLayout创建了一个垂直布局,并将按钮添加到布局中。我们还将按钮的clicked信号连接到show_progress函数。在show_progress函数中,我们创建了一个新窗口,并显示了新窗口。

结论

在本文中,我们介绍了PyQt5实现在别的窗口弹出进度条的步骤,并提供了两个示例说明可以根据具体的需求选择不同的示例进行学习和实践。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pyqt5 实现在别的窗口弹出进度条 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Caffe自带的两个DEMO

    caffe源码包提供了多个DEMO,这里介绍mnits和cifar10的实验 1. mnits 安装好caffe后,在caffe-master/examples/mnist目录下可以找到LeNet模型的具体实现 数据下载: ./data/mnist/get_mnist.sh  在./data/mnist/目录下下载了4个*.gz格式的数据压缩包,train-…

    2023年4月8日
    00
  • Caffe应用篇—-文件格式转换

    1 训练前准备   caffe常使用的数据是db格式(leveldb/lmdb),我们手中有的图片数据,jpg、bmp格式等,必须转换;此操作caffe已经提供工具。它的路径是/home/your/caffe-master/build/tools/convert_imageset.bin;不过,使用它之前,需要先生成一个依赖文本文件。 convert_ima…

    Caffe 2023年4月6日
    00
  • caffe编译报错 cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor

    转载自: https://blog.csdn.net/u011070171/article/details/52292680   这是因为当前版本的caffe的cudnn实现与系统所安装的cudnn的版本不一致引起的。 解决办法: 1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudn…

    Caffe 2023年4月6日
    00
  • (原+转)pycharm中使用caffe

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5896446.html 参考网址: http://www.th7.cn/Program/Python/201510/641841.shtml http://stackoverflow.com/questions/33371954/pycharm-import-ca…

    Caffe 2023年4月8日
    00
  • SSD-caffe 实验

    参考博客:https://blog.csdn.net/samylee/article/details/51822832 将kitti_detec数据转化成VOC格式:比例为8:1:1(原始训练集) 它由7481个训练图像(有标签)和7518个测试图像(无标签)组成。 该基准使用二D边界框重叠来计算用于检测的精确召回曲线,并计算定位相似性以评估鸟瞰视图中的定位…

    2023年4月8日
    00
  • AE制作字从一个人脸上划过的动态效果

    下面是关于“AE制作字从一个人脸上划过的动态效果”的完整攻略。 背景 AE是一款流行的视频制作软件,它可以制作各种动态效果。在AE中,我们可以制作字从一个人脸上划过的动态效果。本文将介绍如何制作这种动态效果。 解决方案 以下是AE制作字从一个人脸上划过的动态效果的步骤: 步骤一:准备素材 在制作字从一个人脸上划过的动态效果之前,我们需要准备好以下素材: 一个…

    Caffe 2023年5月16日
    00
  • 转载一篇较为详细的caffe-ssd编译环境的搭建

    这篇搭建的文章写得还是比较全面的,亲测有效:https://blog.csdn.net/lukaslong/article/details/81390276

    Caffe 2023年4月5日
    00
  • python脚本生成caffe train_list.txt的方法

    下面是关于“python脚本生成caffe train_list.txt的方法”的完整攻略。 问题描述 在caffe中,我们通常需要将训练数据的路径保存在train_list.txt文件中,以便于训练模型。那么,在python中,如何生成train_list.txt文件? 解决方法 以下是使用python脚本生成caffe train_list.txt文件的…

    Caffe 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部