2017-12-23 24 views
1

Ich bin neu in Python und VS und ich versuche, eine einfache GUI mit einer Schaltfläche zu machen. Sobald ich auf den Button Ich möchte es drucken (5) klicken.Button Click Event auf IronPython + Wpf

Der Code sieht wie folgt, aber wenn ich auf "Ausführen" es verlässt ohne Aktion:

import wpf 

from System.Windows import Application, Window 

class MyWindow(Window): 
    def __init__(self): 
     wpf.LoadComponent(self, 'WpfApplication1.xaml') 

    BUTTON.Click += self.Button_Click 
    print(5) 

def Button_Click(self, sender, e): 
    pass 

if __name__ == '__main__': 
    Application().Run(MyWindow()) 

XAML:

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="WpfApplication1" Height="300" Width="300"> 
     <Grid> 
     <Button x:Name="BUTTON" Content="Button" HorizontalAlignment="Left" Margin="101,82,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click" Background="#FFFF1616"/> 
    </Grid> 
</Window> 

Danke.

+0

Wäre einfacher zu dis Wenn Sie Ihre Antwort so bearbeiten könnten, dass sie den relevanten Teil des XAML-Codes enthält? – gtalarico

+0

hat den XAML hinzugefügt. – Ben

+0

Auch, wenn ich eine Titelbearbeitung vorschlagen könnte, wäre so etwas passender, da Ihre Frage über Ironpython/WPF und nicht Visual Studio lautet: 'Button Click Event auf IronPython + Wpf' – gtalarico

Antwort

0

Sie müssen einen Ereignishandler für das Klicken der Schaltfläche hinzufügen. Fügen Sie das einfach zu Ihrem Fenster init hinzu. (TASTE sollte den Namen der Taste auf Ihrem XAML-Code entsprechen)

ui = wpf.LoadComponent(self, 'WpfApplication1.xaml') 
ui.BUTTON.Click += self.Button_Click 

Sie können auch das gleiche durch den XAML-Code erreichen:

 <Button x:Name="BUTTON" Click="Button_Click"></Button> 

Arbeits Code mit Kommentaren unten:

import wpf 

from System.Windows import Application, Window 

class MyWindow(Window): 
    def __init__(self): 
     self.ui = wpf.LoadComponent(self, 'form.xaml') 
     # not needed because event handler 
     # is in XAML 
     # to handle event on code, remove this from xaml's button tag: 
     # Click="Button_Click" 
     # and uncomment line below: 
     # self.ui.Button.Click += self.Button_Click 

    def Button_Click(self, sender, e): 
     print('Button has clicked') 

if __name__ == '__main__': 
    Application().Run(MyWindow()) 
    # Alternatively, below also works: 
    # form = MyWindow() 
    # form.ShowDialog() 

Siehe Screenshot des Arbeitsformulars: enter image description here

+0

Ich habe es geändert, aber es hat nicht funktioniert, ich aktualisiert den Fragekameraden. – Ben

+0

Es scheint wie nach 1 Kompilierung das Programm aufhört zu kompilieren, egal was der Code ist und ich bekomme den folgenden Fehler: Das Programm '[3484] ipyw.exe' hat mit Code 1 (0x1) beendet. – Ben

+0

hinzugefügt voll funktionsfähige Probe – gtalarico

Verwandte Themen