2015-02-16 2 views
-1

Есть ли способ обнаружить движение ползунка и вызвать другую функцию без отправки каких-либо аргументов с сигналом?Python: как определить движение ползунка и вызвать функцию без отправки каких-либо аргументов?

У меня есть функция, в которой установлен аргумент по умолчанию, поэтому нет необходимости говорить, что если я назову его, используя сигнал, имеющий с ним аргумент (slider.valueChanged()), он перезаписывает аргумент по умолчанию.

 funcdic = {} 
     for x in range(0,3): 
     def slidechanged(foo=x): 
      svalue = str(self.sliderdic1[foo].value()) 
      self.entrydic2[foo].setText(svalue) 
      print svalue 
     funcdic.update({x:slidechanged}) 
+0

Какой слайдер? Вы используете некоторую графическую библиотеку? Если да, то какой? – BrenBarn

+0

Я использую pyqt4, извините за отсутствие упоминания о нем – Nyoa

ответ

0

Как оказались, вызов функции без передачи аргументов легко сделать с помощью лямбды, мой плохими забываниями такой простой вещи. У меня три словаря в словаре, поэтому я сделал три сигнала.

 funcdic = {} 
     for x in range(0,3): 
     def slidechanged(foo=x): 
      print foo 
      svalue = str(self.sliderdic1[foo].value()) 
      self.entrydic2[foo].setText(svalue) 
      print svalue 
     funcdic.update({x:slidechanged}) 

     self.sliderdic1[0].valueChanged.connect(lambda: funcdic[0]()) 
     self.sliderdic1[1].valueChanged.connect(lambda: funcdic[1]()) 
     self.sliderdic1[2].valueChanged.connect(lambda: funcdic[2]()) 
Смежные вопросы