Ich habe einen Knopf und zwei Schieber in meiner Probe .kv
Datei:Kivy Aufruf Methoden aus verschiedenen Klassen
<intLab>:
BoxLayout:
orientation: "vertical"
BoxLayout:
size_hint_y: None
height: 10
orientation: "horizontal"
FREQslider:
id: s2
color: 1,0.5,1,1
value: 20
orientation: 'vertical'
max: 300
min: 20
size_hint_x: None
width: '48dp'
step: 1
on_value: root.onFrequencySlide(self.value)
AMPLslider:
id: s3
color: 1,.5,.5,0
value: 1
orientation: 'vertical'
max: 100
min: 0
size_hint_x: None
width: '48dp'
step: 1
on_value: root.onAmplitudeSlide(self.value)
ToggleButton:
id: 'enableBtn'
text: 'Enable' if self.state == 'normal' else 'Disable'
state: 'normal'
on_release: root.on_disable()
In der .py
Datei Ich habe zwei Klassen. Die Klasse, die der .kv
Struktur, intLab
und einer anderen Klasse KivyCamera
entspricht.
class intLab(BoxLayout):
def init_intlab(self):
pass
def on_disable(self):
self.updateFreqAmpl(0, 0)
self.ids.s2.value = 20
self.ids.s3.value = 0
Vom Kivy UI, wenn ich drücken Sie die Taste disable
, die updateFreqAmpl
Methode wird aufgerufen, und beiden Schieber sind auf 20 bzw. 0, so dass dies funktioniert.
Allerdings, wenn ich die on_disable
Methode aus der KivyCamera
Klasse aufrufen dann, obwohl die updateFreqAmpl
Methode aufgerufen wird, ändern sich die Schieber-Werte nicht, aber kein Fehler gegeben.
Hier ist, wie ich die on_disable
Methode aus der KivyCamera
Klasse aufrufen:
class KivyCamera(Image):
def __init__(self, **kwargs):
super(KivyCamera, self).__init__(**kwargs)
self.capture = None
def update(self, dt):
t = intLab()
intLab.on_disable(t)
Bitte beachten Sie, dass dieses vereinfachte Beispiel ist, aber ich habe die Kern Details erfasst.
Es macht keinen Sinn zu nennen 'intLab.on_disable (t)', wenn Ihr Rat nicht eine neue Instanz zuweisen zu "t". Mit dem "t" entfernt bekomme ich diesen Fehler 'TypeError: ungebundene Methode on_disable() muss mit intLab-Instanz als erstes Argument aufgerufen werden (bekommt stattdessen nichts)' – tomdertech
Sie sollten es auf eine andere Weise zugreifen, zum Beispiel * hässlich way *, keep eine globale Referenz darauf –
Könnten Sie mir bitte ein Beispiel geben. Ich weiß nicht, wie du meinst. Danke – tomdertech