Как в PyQt вывести значение ползунка в бесконечном цикле?

Рейтинг: 0Ответов: 1Опубликовано: 07.07.2023

Данный код позволяет выводить значение ползунка. Но, что нужно изменить в коде, чтобы выводить значения ползунка в бесконечном цикле?

main.py

import sys

from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.uic import loadUi


class SliderValue(QMainWindow):
    def __init__(self):
        super(SliderValue, self).__init__()
        loadUi("slider_test.ui", self)

        self.ui_horizontalSlider.valueChanged.connect(self.updateValue)

    def updateValue(self, value):
        print(value)

    # Вывод в бесконечном цикле значения с ползунка
    # ?? def printValueInLoop(self):
    # ??     while(True):
    # ??         self.updateValue()



if __name__ == '__main__':
    app = QApplication(sys.argv)
    SV = SliderValue()
    SV.show()
    sys.exit(app.exec())

slider_test.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QSlider" name="ui_horizontalSlider">
    <property name="geometry">
     <rect>
      <x>330</x>
      <y>240</y>
      <width>160</width>
      <height>22</height>
     </rect>
    </property>
    <property name="orientation">
     <enum>Qt::Horizontal</enum>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>26</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

Ответы

▲ 1Принят

Вы можете использовать QTimer:

import sys

from PyQt6.QtCore import QTimer
from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.uic import loadUi


class SliderValue(QMainWindow):
    def __init__(self):
        super(SliderValue, self).__init__()
        loadUi("slider_test.ui", self)

        self.ui_horizontalSlider.valueChanged.connect(self.updateValue)

        self.timer = QTimer()
        self.timer.setInterval(500)
        self.timer.timeout.connect(self.print_value)
        self.timer.start()

    def updateValue(self, value):
        print(value)

    def print_value(self) -> None:
        print(self.ui_horizontalSlider.value())




if __name__ == '__main__':
    app = QApplication(sys.argv)
    SV = SliderValue()
    SV.show()
    sys.exit(app.exec())

В self.timer.setInterval( указывается с какой периодичностью вызывать сигнал в миллисекундах