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日

相关文章

  • 基于Python进行年龄和性别检测

    下面是关于“基于Python进行年龄和性别检测”的完整攻略。 问题描述 年龄和性别检测是计算机视觉领域的一个重要应用,可以用于人脸识别、安防等领域。本文将介绍如何使用Python进行年龄和性别检测,并提供两个示例说明。 解决方法 以下是使用Python进行年龄和性别检测的步骤: 安装必要的库: bash pip install opencv-python p…

    Caffe 2023年5月16日
    00
  • Caffe 全连接层

    深度学习笔记(6)全连接层的实现:全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。 全连接层的前向计算 下图中连线最密集的2个地方就是全连接层,这很明显的可以看出全连接层的参数的确很多。在前向计算过程,也就是一个线性的加权求和的过程,全连接层的每一个输出都可以看成前一层的每一个结…

    2023年4月8日
    00
  • 【caffe】mnist训练日志

    @tags caffe 前面根据train_lenet.sh改写了train_lenet.py后,在根目录下执行它,得到一系列输出,内容如下: I1013 10:05:16.721294 1684 caffe.cpp:218] Using GPUs 0 I1013 10:05:17.525264 1684 caffe.cpp:223] GPU 0: GeFo…

    Caffe 2023年4月8日
    00
  • ubuntu下caffe加入新的python层问题解决

    1. https://blog.csdn.net/computerme/article/details/78645445 这个很全,感谢作者   2. 问题:我遇到的   WITH_PYTHON_LAYER=1 make all -j&& make pycaffe 问题 CXX/LD -o python/caffe/_caffe.so pyt…

    Caffe 2023年4月8日
    00
  • ubuntu14.04&matlab2015b 测试caffe的Matlab接口

    Step1: 修改caffe-master中的Makefile.config 提示:可以到文件中直接“ctrl+f”,键入相应大写字母即可查找到相应位置。 Step2:编译接口。如果之前编译caffe环境时候,已经runtest过了的话,可以直接编译接口,在caffe-master目录下打开终端,输入: make catcaffe。 注:一定记得在这步之前修…

    2023年4月5日
    00
  • caffe-windows的配置

    本文主要介绍官方给出的caffe-windows的配置及如何训练mnist数据集,介绍的比较基础,大神请绕道 1、环境:windows 10\CUDA7.5\cuDNN\VS2013 2、GPU计算环境准备(没有GPU的同学可以跳过此步) (1)首先下载并安装CUDA7.5,下载界面如图1: 图 1:CUDA7.5的下载界面 (2)下载cuDNN,注意要下载…

    2023年4月8日
    00
  • 【软件安装与环境配置】TX2安装配置caffe过程

    Tx2刷机   sudo sh ./caffe_dependency.sh  注意python的版本问题。 问题 LD -o .build_release/lib/libcaffe.so.1.0.0 /usr/bin/ld: cannot find -lhdf5_hl /usr/bin/ld: cannot find -lhdf5 collect2: err…

    Caffe 2023年4月8日
    00
  • caffe中的卷积

    https://www.zhihu.com/question/28385679     如上,将三维的操作转换到二维上面去做,然后调用GEMM库进行矩阵间的运算得到最后结果。 两个矩阵相乘,需要中间的那个维度相同,这个相同的维度就是C×K×K,其中C是Feature map的维度,K为卷积核的边长。 按照卷积核在Feature map上面滑窗的顺序将其展开成…

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