Рассмотрим простой пример, как это, который связывает два слайдера с использованием сигналов и слотов:PySide (или PyQt) сигналы и слоты Основы
from PySide.QtCore import *
from PySide.QtGui import *
import sys
class MyMainWindow(QWidget):
def __init__(self):
QWidget.__init__(self, None)
vbox = QVBoxLayout()
sone = QSlider(Qt.Horizontal)
vbox.addWidget(sone)
stwo = QSlider(Qt.Horizontal)
vbox.addWidget(stwo)
sone.valueChanged.connect(stwo.setValue)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyMainWindow()
w.show()
sys.exit(app.exec_())
Как бы вы изменить это так, что второй ползун движется в противоположном направлении, как первый? Slider один будет инициализирован с этими значениями:
sone.setRange(0,99)
sone.setValue(0)
и ползунок два будет инициализирован с этими значениями:
stwo.setRange(0,99)
stwo.setValue(99)
И тогда значение stwo будет 99 - sone.sliderPosition
.
Как бы вы реализовали сигнал и слот, чтобы сделать эту работу? Я был бы признателен за рабочий пример, который опирается на простой пример выше.
Извините за плохой пример. Я просто учился. Я попробовал запустить ваш пример, и я получил пустое окно без ползунков (и никаких ошибок). Тогда я заметил, что вы отредактировали свой ответ. Теперь я получаю сообщение об ошибке «NameError: name« QWidget »не определен», когда я пытаюсь запустить ваш код. Я посмотрю, смогу ли я это понять. Кстати, спасибо за предложения о том, как правильно подойти к этому. – MountainX
Получил работу. Благодарю. – MountainX
@MountainX: не нужно извиняться за ваши примеры. У вас был хорошо организованный вопрос. Рад, что ты заработал! – jdi