📜  PyQt5 QSpinBox – 获取线程(1)

📅  最后修改于: 2023-12-03 15:33:54.171000             🧑  作者: Mango

PyQt5 QSpinBox – 获取线程

在 PyQt5 中使用 QSpinBox 控件来获取线程信息。

简介

PyQt5 提供了一系列的控件,其中包括 QSpinBox。它是一个带有增加和减少按钮的小部件,允许用户以一定的步长往上或往下调整数字值。在本文中,我们将探讨如何使用 QSpinBox 来获取线程。

示例

以下是一个简单的示例,演示如何在 PyQt5 中使用 QSpinBox 控件来获取线程:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QVBoxLayout
from PyQt5.QtCore import QThread

class MyThread(QThread):

    def __init__(self, value):
        super().__init__()
        self.value = value

    def run(self):
        print("Thread started with value:", self.value)

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 QSpinBox'
        self.left = 100
        self.top = 100
        self.width = 300
        self.height = 150
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # Create QSpinBox widget
        self.spinBox = QSpinBox(self)
        self.spinBox.setMinimum(1)
        self.spinBox.setMaximum(100)
        self.spinBox.setValue(10)
        self.spinBox.valueChanged.connect(self.startThread)

        # Create a vertical layout
        vbox = QVBoxLayout()
        vbox.addWidget(self.spinBox)

        # Set the layout for the window
        self.setLayout(vbox)

        self.show()

    def startThread(self):
        value = self.spinBox.value()
        thread = MyThread(value)
        thread.start()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

运行代码后,将显示一个 QSpinBox 控件和一个窗口。用户可以使用按钮提高或降低数字值。每次值发生变化时,都会启动一个新线程,打印一个值。

总结

在本文中,我们学习了如何在 PyQt5 中使用 QSpinBox 控件来获取线程。我们创建了一个小部件,当用户更改值时,调用 startThread 方法启动一个新线程,并将值传递给它。在运行过程中,可以看到每个线程都打印出了其相应的值。

代码片段:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QVBoxLayout
from PyQt5.QtCore import QThread

class MyThread(QThread):

    def __init__(self, value):
        super().__init__()
        self.value = value

    def run(self):
        print("Thread started with value:", self.value)

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 QSpinBox'
        self.left = 100
        self.top = 100
        self.width = 300
        self.height = 150
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # Create QSpinBox widget
        self.spinBox = QSpinBox(self)
        self.spinBox.setMinimum(1)
        self.spinBox.setMaximum(100)
        self.spinBox.setValue(10)
        self.spinBox.valueChanged.connect(self.startThread)

        # Create a vertical layout
        vbox = QVBoxLayout()
        vbox.addWidget(self.spinBox)

        # Set the layout for the window
        self.setLayout(vbox)

        self.show()

    def startThread(self):
        value = self.spinBox.value()
        thread = MyThread(value)
        thread.start()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())