【问题标题】:Qt Designer with Python: Connecting control dial with sliderQt Designer with Python:将控制拨盘与滑块连接
【发布时间】:2015-06-10 03:35:51
【问题描述】:

我有兴趣在 Qt 设计器界面中制作一个看似简单的 RGB 颜色控制器,其中包括一个控制转盘、3 个用于不同颜色的滑块和 3 个 LCD 数字。

表盘指向色轮上的位置,我将表盘周围的点范围设置为 0 到 360,这样蓝色、绿色和红色的最大值(红色处于最大强度,蓝色和绿色不输出颜色)只给出红色)分别出现在 0、120 和 240。

滑块接受拨号输出的整数输入。

我想知道如何让滑块在控制转盘上的某个点开始获取信息,并让滑块在接近该滑块的最大值和从该滑块的最大值后退时上下移动。

我还想知道是否有办法将控制转盘的输出与滑块的输入作为分数关联起来(如果控制转盘的点为 6,则滑块的点将为 3)。

任何关于如何做到这一点的想法或更简单的方法来完成整个事情都会很棒!

【问题讨论】:

  • 您是否阅读过有关信号和插槽的信息。您的滑块和刻度盘都可以发出变化的信号,您可以捕捉并查看当前值。基于此,您可以更改您的值(更多向上/向下滑块)并最终刷新页面。
  • 我希望在表盘的特定数字间隔内同时更改两者。有没有办法我可以编码?还是我必须按照您的建议单独操作它们? @皮疹
  • 您是否按照我的建议阅读了信号。下面是它的工作原理。更改 GUI 的任何部分都会发出一些信号,您可以将代码附加到这些信号上。因此,如果您的表盘发生变化,您可以立即在代码中捕捉到它,您还可以在那里更改滑块。它发生得非常快,给人的印象是这一切都是同时发生的。让我为您找到一个简单的信号示例。
  • 这是一个很好的例子。 pythoncentral.io/… 另外,如果您是初学者,我向您推荐这些视频课程。 youtube.com/watch?v=53oeJPKRttY&list=PLA955A8F9A95378CE
  • 是的,这是可能的。而不是使用 setValue,而是使用一个不同的方法,比如 mySetValue(),它将一个 int 作为参数。然后当信号将值传递给您的函数时,您可以对其进行操作,然后将其传递给实际的 setValue 函数

标签: python qt


【解决方案1】:

这个程序有一个拨号器和一个旋转框。拨号器值与传递拨号器实际值的方法相关联。一旦方法接收到这个值,它就会继续并在其中执行一些操作(在本例中将其减半),然后将值传递给 spinbox 值。

import PySide.QtCore as QtCore
import PySide.QtGui as QtGui
import sys

class MainWindow(QtGui.QDialog):
        def __init__(self):
                QtGui.QDialog.__init__(self)

                dial = QtGui.QDial()
                dial.setNotchesVisible(True)
                self.spinbox = QtGui.QSpinBox()

                layout = QtGui.QHBoxLayout()
                layout.addWidget(dial)
                layout.addWidget(self.spinbox)
                self.setLayout(layout)

                #connect this event to the given method. 
                dial.valueChanged.connect(self.changeSpinbox)

        def changeSpinbox(self, value):
                #do some operation on this value. In this case half it.
                self.spinbox.setValue(value / 2)

app = QtGui.QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
app.exec_()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2013-06-13
    • 1970-01-01
    相关资源
    最近更新 更多