2017-12-23 26 views
1

新しいPythonとVSとimで、ボタン付きの簡単なGUIを作成しようとしています。 ボタンをクリックすると印刷します(5)。ボタンIronPython + Wpfでイベントをクリック

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> 

ありがとう

コードは、私はそれがどんな行動せずに終了し、 "実行" をクリックすると、以下のように見えますが、。

+0

答えを編集してxamlコードの関連部分を含めることができれば、これをお試しください。 – gtalarico

+0

にXAMLが追加されました。 – Ben

+0

また、私はタイトルの編集を提案するかもしれませんが、あなたの質問がVisual Studioではなくironpython/wpfに関するものであるので、このようなものがより適切でしょう。 'Button Click Event on IronPython + Wpf' – gtalarico

答えて

0

ボタンクリックのイベントハンドラを追加する必要があります。これをウィンドウのinitに追加するだけです。 (BUTTONがあなたのXAMLコードでボタンの名前と一致する必要があります)

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

あなたはまた、XAMLコードを通じて同じことを達成することができます:以下のコメント付き

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

の作業コード:

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() 

作業形式のスクリーンショットを参照してください: enter image description here

+0

私はそれを変更しました。質問の相手を更新しました。 – Ben

+0

1のコンパイル後にプログラムがコンパイル中にコードが何であっても停止してしまい、次のエラーが出るようです:プログラム '[3484] ipyw.exe'がコード1(0x1)で終了しました。 – Ben

+0

フルサンプルを追加 – gtalarico

関連する問題