我正在学习使用 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 添加到初始值中,并显示在标签上。是的,它有效。但这是我手动添加的值。
我想在这种情况下我知道的唯一方法是一次用于一个滑块值。
好的,谢谢大家的帮助!
就是这样工作的:
# 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()))