Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IronPython中带有WPF的消息框_Python_.net_Wpf_Visual Studio 2017_Ironpython - Fatal编程技术网

IronPython中带有WPF的消息框

IronPython中带有WPF的消息框,python,.net,wpf,visual-studio-2017,ironpython,Python,.net,Wpf,Visual Studio 2017,Ironpython,我正在尝试在VS2017中使用WPF创建一个简单的GUI。我尝试了以下代码在单击“生成”按钮后显示MessageBox: import wpf from System.Windows import MessageBox def generate_Btn_Click(self, sender, e): MessageBox.Show("hi") 如果我单击generate按钮,它就会显示出来,但是如果我尝试在MessageBox.show()之前添加一个if语句,它就会显示出来: 单击“生

我正在尝试在VS2017中使用WPF创建一个简单的GUI。我尝试了以下代码在单击“生成”按钮后显示MessageBox:

import wpf
from System.Windows import MessageBox
def generate_Btn_Click(self, sender, e):
   MessageBox.Show("hi")
如果我单击generate按钮,它就会显示出来,但是如果我尝试在
MessageBox.show()之前添加一个if语句,它就会显示出来:

单击“生成”按钮后,不显示MessageBox,窗口关闭。我的问题是如何使用WPF在IronPython中使用MessageBox。 按下按钮时无法工作的简单示例如下:

import wpf
from System.Windows import MessageBox
from System.Windows import Application, Window

class MyWindow(Window):
    def __init__(self):
        wpf.LoadComponent(self, 'IronPython5.xaml')
    str1 = ""
    def Button_Click(self, sender, e):
        if str1 == "":
            MessageBox.Show("msg1")
        else:
            MessageBox.Show("msg2")

        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="IronPython5" Height="300" Width="300"> 
       <Grid>
        <Button Content="Button" HorizontalAlignment="Left" Margin="159,238,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    </Grid>
</Window> 

当我从cmd运行时,我得到的错误如下:

C:\Program Files (x86)\IronPython 2.7>ipy wpfapp.py
Traceback (most recent call last):
  File "wpfapp.py", line 19, in <module>
  File "wpfapp.py", line 10, in Button_Click
NameError: global name 'str1' is not defined

如果A==None:
A可能会抛出错误,除非它引用了代码中的某些内容?@PRMoureu它引用了一个变量并且是有效的。我删除了额外的代码以使其干净。我在代码的其他部分使用了A,这样就可以了。
A
是全局变量吗?@denfromufa它是为当前项目定义的类的一个成员,并且被初始化为none。然后您需要显示类中的方法以及它是如何实例化的。目前,您的代码无法运行且不可复制。我打赌如果你从cmd启动你的应用程序,那么在第二种情况下,控制台会出现一些错误。非常感谢。很好用!请告诉我您是如何使用ipy.exe启动代码的?是否确实需要将XAML和python代码都放在ipy.exe目录中,然后运行它?我不知道如何运行VS使用commad行创建的IronPython项目。
C:\Program Files (x86)\IronPython 2.7>ipy wpfapp.py
Traceback (most recent call last):
  File "wpfapp.py", line 19, in <module>
  File "wpfapp.py", line 10, in Button_Click
NameError: global name 'str1' is not defined
import wpf
from System.Windows import MessageBox
from System.Windows import Application, Window

class MyWindow(Window):
    def __init__(self):
        self.str1 = ""
        wpf.LoadComponent(self, 'app.xaml')
    def Button_Click(self, sender, e):
        if self.str1 == "":
            MessageBox.Show("msg1")
        else:
            MessageBox.Show("msg2")

        pass


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