Jeweils ein Slider Element für grob und Fein Tuning

Plattformunabhängige GUIs mit wxWidgets.
Antworten
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Freitag 27. Februar 2009, 14:51

Hi Leute,

ich kriege es mal wieder nicht hin. :(
Daher bräcuhte ich mal euren Rat.

Ich arbeite an einer grafischen Anwendung in der 2 horizonale Slider
Elemente von einander abhängig sein sollen.

Ein Slider Element stellt die die Grobe Frequenz ein und ein weiteres Slider
Element stellt die Fein Einstellung ein.

Die Variable <self.usrp_freq> soll voreingestellt werden auf 10e3.
Das grobe Slider Element kann von 0 bis 29e3 geändert werden.
Das feine Slider Element kann nur um +-1.45e3 um den derzeitigen
Wert vom groben Slider Element bewegt werden.

Was mache ich falsch?
Oder wie könnte ich es richtiger machen?

Hier ein Teil meines Codes:

Code: Alles auswählen

class uebertragungschar_LF_RX(grc_wxgui.top_block_gui):

	def __init__(self, options):
		grc_wxgui.top_block_gui.__init__(self,
		   __title__+' - '+__author__+' - '+__version__)

		##################################################
		# Parameters
		##################################################
 . . .
		self.usrp_freq_min = options.usrp_freq_min
		self.usrp_freq_max = options.usrp_freq_max

		##################################################
		# Variables
		##################################################
		self.usrp_freq = 10e3
. . .

		##################################################
		# Controls
		##################################################
		self._usrp_freq_control = grc_wxgui.slider_horizontal_control(
			window=self.GetWin(),
			callback=self.set_usrp_freq,
			label="Oszillatorfrequenz Grob",
			value=self.usrp_freq,
			min=self.usrp_freq_min,
			max=self.usrp_freq_max,
			num_steps=290,
			slider_length=400,
		)
		self.Add(self._usrp_freq_control)
		self._usrp_freq_fine_control = grc_wxgui.slider_horizontal_control(
			window=self.GetWin(),
			callback=self.set_usrp_freq,
			label="Oszillatorfrequenz Fein",
			value=self.usrp_freq,
			min=self._usrp_freq_control.get_value()-1.45e3,
			max=self._usrp_freq_control.get_value()+1.45e3,
			num_steps=29,
			slider_length=400,
		)
		self.Add(self._usrp_freq_fine_control)

. . .

	def set_usrp_freq(self, freq):
		self.usrp_freq = freq
		self.set_middle_freq_fft_plot(self.usrp_freq)
		self.usrp_simple_source_x.set_frequency(self.usrp_freq)
		self._usrp_freq_fine_control.set_value(freq)

. . .

if __name__ == '__main__':
	parser = OptionParser()
. . .
	parser.add_option("--usrp_freq_min", dest="usrp_freq_min", type="float", default=0)
	parser.add_option("--usrp_freq_max", dest="usrp_freq_max", type="float", default=29e6)
	(options, args) = parser.parse_args()	
	tb = uebertragungschar_LF_RX(options)
	tb.Run()
Grüße Markus
Antworten