【问题标题】:Ironpython Studio formsIronpython Studio 表单
【发布时间】:2008-12-12 10:36:07
【问题描述】:

这是一个两部分的问题。一个愚蠢的技术问题和一个更广泛的问题,是关于我学习用一种我刚接触的语言做一些事情的可能错误的方法。

我只是在玩一些 Python GUI 库(主要是 wxPython 和 IronPython)来完成一些我正在考虑在开源应用程序上做的工作,只是为了提高我的技能等等。

白天,我是一个非常标准的 c# 开发者,使用一组非常普通的基于 MS 的工具,我正在寻找 Python 来给我一个新的视角。因此使用 Ironpython Studio 可能有点作弊(好吧,很多)。这似乎无关紧要,因为无论它多么试图看起来像一个 Visual Studio 项目等。有一个简单的行为我可能太笨而无法实现。

I.E.我如何将我的表单保存在很好的单独代码文件中,就像我一直以来的 c# 猴子一样,但又相互调用它们?我已经尝试将要调用的表单导入到主表单中,但我似乎无法让表单被识别为对象以外的任何东西。新表单似乎是它自己的代码文件中的表单对象,我正在导入 clr。我正在尝试调用表单的“显示”方法。这不对吗?

我已经尝试了一些(在我看来不太可能)解决此问题的方法,但问题似乎难以解决。这是我没有看到的东西,还是实际上更适合我改变我对 GUI 脚本的看法以适应 Python观点)而不是尝试从 Visual Studio shell 的安全性来看待 Python?

【问题讨论】:

    标签: ironpython ironpython-studio


    【解决方案1】:

    我对这个问题并不完全清楚。你当然可以在 IronPython 的一个模块中定义System.Windows.Forms.Form 的子类,然后在其他模块中导入表单子类:

    # in form.py
    from System.Windows.Forms import Form, Button, MessageBox
    class TrivialForm(Form):
       def __init__(self):
           button = Button(Parent=self, Text='Click!')
           button.Click += self.show_message
    
       def show_message(self, sender, args):
           MessageBox.Show('Stop that!')
    
    # in main.py
    import clr
    clr.AddReference('System.Windows.Forms')
    from System.Windows.Forms import Application
    from form import TrivialForm
    if __name__ == '__main__':
       f = TrivialForm()
       Application.Run(f)
    

    IronPython Studio 的表单设计器/代码生成器是否不允许您这样构建代码? (我没用过。)

    【讨论】:

      【解决方案2】:

      最后变得更简单了。

      我试图这样调用子表单:

      f = frmSubform()
      f.Show()

      但我实际上需要这样做

      f = frmSubform()
      Form.Show(f)

      Form.ShowDialog(f) 也有效;当然是对话框格式。

      一个足够简单的错误,但直到你知道你,好吧,不知道。

      我不是 100% 确定我在这个阶段理解为什么什么有效,有效,但我相信我会通过经验来学习。

      【讨论】:

        猜你喜欢
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多