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

yizhihongxing

下面是关于“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时遇到cannot create Cublas handle. Cublas won’t be available.错误

    在Ubuntu16.04下,已安装CUDA8.0和cudnn5.1,编译caffe通过,make runtest通过。但在使用caffe进行网络训练时,发生错误如下: 解决方法:这是显卡驱动版本过高的原因。本人的1080Ti显卡使用NVIDIA-Linux-x86_64-384.69驱动就会出现上述问题,换成NVIDIA-Linux-x86_64-375.8…

    2023年4月8日
    00
  • 使用caffe训练自己的图像数据(未完)

    参考博客:blog.csdn.net/drrlalala/article/details/47274549 1,首先在网上下载图片,猫和狗。直接保存下载该网页,会生成一个有图片的文件夹。caffe-master/data  新建 myselfmyself/  新建  train   dog                                cat…

    Caffe 2023年4月5日
    00
  • Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中

    下面是关于“Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中”的完整攻略。 判断图片格式并转换 以下是Python实现判断图片格式并转换的步骤: 导入必要的库 python from PIL import Image import os 定义函数 “`python def convert_image_format(input_dir, …

    Caffe 2023年5月16日
    00
  • 使用TensorRT对caffe和pytorch onnx版本的mnist模型进行fp32和fp16 推理 | tensorrt fp32 fp16 tutorial with caffe pytorch minist model

    本文首发于个人博客https://kezunlin.me/post/bcdfb73c/,欢迎阅读最新内容! tensorrt fp32 fp16 tutorial with caffe pytorch minist model Part 1: install and configure tensorrt 4 on ubuntu 16.04 Part 2: t…

    Caffe 2023年4月5日
    00
  • caffe中的loss和accuracy曲线

    caffe绘制训练过程的loss和accuracy曲线 转载自http://blog.csdn.net/u013078356/article/details/51154847   在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果。如果自己写代码记录训练过程的数据,那就太麻烦了,caffe中其实已经自带了这样的小工具 caffe-m…

    2023年4月8日
    00
  • caffe测试mnist问题-error while loading shared libraries

    问题描述 build/examples/mnist/convert_mnist_data.bin: error while loading shared libraries: libcudart.so.9.2: cannot open shared object file: No such file or directory 解决方法 caffe运行时需要调…

    Caffe 2023年4月7日
    00
  • caffe中的caffemodel参数提取方法

    需要的文件为:deploy.prototxt                          caffemodel net = caffe.Net(deploy.txt,caffe_model,caffe.TEST)具体代码: import caffeimport numpy as nproot=’/home/xxx/’ #根目录deploy=root +…

    Caffe 2023年4月5日
    00
  • Ubuntu16.04+CUDA8.0+caffe配置

    电脑配置 系统:Ubuntu16.04 GPU:NVIDIA GTX1050   安装过程 1.安装相关依赖项 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler  sudo a…

    2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部