使用 PyQt5 计算两个 QSliders 值

问题描述 投票:0回答:1

我正在学习使用 PyQt5,一个对我有用的函数是滑块/刻度盘值,我可以用另一个函数计算它(例如,我正在开发一个 python 应用程序来计算线圈电感)。

但是我在网上找到的所有教程都是在标签上显示的简单代码。

一般看起来像这样:

from PyQt5.QtWidgets import QMainWindow, QApplication, QSlider, QLabel
from PyQt5 import uic
import sys

class UI(QMainWindow):
    def __init__(self):
        super(UI,self).__init__()

        # Load the ui file
        uic.loadUi("Vsliders.ui", self)

        #define widgets
        self.slider         = self.findChild(QSlider,"slider")
        self.slider_value   = self.findChild(QLabel,"slider_value")

        # Slider properties
        self.slider.setMinimum(0)
        self.slider.setMaximum(100)
        self.slider.setValue(10)
        self.slider.setTickPosition(QSlider.TicksRight)
        self.slider.setTickInterval(5)
        self.slider.setSingleStep(5)

        # Move the slider
        self.slider.valueChanged.connect(self.slide_it)

        #show the App
        self.show()

    def slide_it(self, value):
        self.slider_value.setText(str(value))

#Initialize the app
app = QApplication(sys.argv)
UIWindow = UI()
app.exec_()

我知道我们连接了slide_it函数上的唯一值。但是我们如何连接 2 个值呢?

比如:我怎样才能获取滑块的“int”值?并用它来计算?

我试过这个:

        self.slider.valueChanged.connect(self.slide_it)
        self.slider_2.valueChanged.connect(self.slide_it)

        #show the App
        self.show()

    def slide_it(self, value, value2):
        self.slider_value.setText(str(value + value2))

我原以为它会在 value 上使用幻灯片 1,在 value2 上使用滑块 2。

但它返回了:

TypeError: UI.slide_it() missing 1 required positional argument: 'value2'

代替

self.slider.valueChanged.connect(self.slide_it)

我试过了

self.slider.value.connect(self.slide_it)

# or 

test = self.slider.value() # as a variable value 

    # for example adding directly both values in my function

    def slide_it(self):
        self.slider_value.setText(str(self.slider.value() + self.slider_2.value() ))

但事实证明这些函数不能直接用作变量值。

TypeError: native Qt signal is not callable

此外 .value() 不会使任何东西移动。我认为它确实需要 .valueChanged 属性。

我也尝试过这个,这不完全是我想要的,但它确实有结果

    def slide_it(self, value):
        self.slider_value.setText(str(value + 2))

这样我就可以将 to 添加到初始值中,并显示在标签上。是的,它有效。但这是我手动添加的值。

我想在这种情况下我知道的唯一方法是一次用于一个滑块值。

python-3.x pyqt pyqt5 qt-designer
1个回答
0
投票

好的,谢谢大家的帮助!

就是这样工作的:

        # Move the slider
    self.slider.valueChanged.connect(self.slide_it)
    self.slider_2.valueChanged.connect(self.slide_it)

    #show the App
    self.show()

def slide_it(self):
    self.slider_value.setText(str(self.slider.value() + self.slider_2.value()))
© www.soinside.com 2019 - 2024. All rights reserved.