0

我正在尝试复制此页面中包含的示例中的一些代码,并使用这些教程中的一些帮助对其进行修改以在 Iron python 上运行。但是当我走出教程时,我被困住了,我不知道我需要导入哪些模块。

目前我有以下代码

import clr
clr.AddReference("System.Drawing")
clr.AddReference("System.Windows.Forms")

from System.Windows.Forms import Application, Form, Button, Label, DockStyle, AnchorStyles, Panel, Screen, FlowLayoutPanel

class OKWindow(Form):
   def __init__(self,InfoTXT):
      newlines = 0
      screenSize = Screen.GetWorkingArea(self)
      STRwidth = 200
      STRheight = 30
      FORMheight = 160 
      FORMwidth = 300
      self.Text = 'Information'
      self.Height = FORMheight
      self.Width = FORMwidth


      self.flowPanel = FlowLayoutPanel()
      #self.flowPanel.AutoSize = true
      #self.flowPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink
      self.Controls.Add(flowPanel)

      label = Label()
      label.Text = InfoTXT
      label.Top = 30
      label.Left = 50
      label.Height = STRheight
      label.Width = STRwidth

      button = Button()
      button.Text = "OK"
      button.Width = 100
      button.Top = FORMheight - 80
      button.Left = (FORMwidth / 2) - 50
      print button.Anchor
      button.Anchor = AnchorStyles.Bottom

      button.Click += self.buttonPressed

      self.Controls.Add(label)
      self.Controls.Add(button)

   def buttonPressed(self, sender, args):
      Application.Exit()

def information(Message):
   Application.EnableVisualStyles()
   form = OKWindow(Message)
   Application.Run(form)

(注意:代码不准确,因为它当前在 OCTGN 的 Iron python 脚本引擎中运行。我从其他地方调用 information() 函数,并带有一些文本,例如information('Important Announcement')。)

因此,一旦我尝试执行此代码,代码就会中止self.flowPanel = FlowLayoutPanel()。如果我注释掉 flowPanel 行,windows 窗体会正常显示。

所以在我看来,我没有正确导入需要的模块。不幸的是,我不知道要加载什么。我尝试加载我认为合适的任何内容,但似乎没有一个对我有用。

如何确定要从哪个模块导入System.Windows.Forms以便在我的代码中创建 FlowLayoutPanel?一般来说,如何确定要导入什么以获得相关功能?

4

2 回答 2

1

答案似乎是第三个点“。”之后的任何内容。在 System.Windows.Forms

所以要使用System.Windows.Forms.Form,需要导入Form。

于 2012-09-23T16:41:58.410 回答
1

所有的答案都错了。导入中缺少 AutoSizeMode,然后代码有效

import clr
clr.AddReference("System.Drawing")
clr.AddReference("System.Windows.Forms")



from System.Windows.Forms import Application, Form, Button, Label, DockStyle, AnchorStyles, Panel, Screen, FlowLayoutPanel,AutoSizeMode

#from System.Windows.Forms import *



class OKWindow(Form):
    def __init__(self,InfoTXT):
        newlines = 0
        screenSize = Screen.GetWorkingArea(self)
        STRwidth = 200
        STRheight = 30
        FORMheight = 160 
        FORMwidth = 300
        self.Text = 'Information'
        self.Height = FORMheight
        self.Width = FORMwidth


        flowPanel = FlowLayoutPanel()
        flowPanel.AutoSize = True
        flowPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink

        print(AutoSizeMode)
        self.Controls.Add(flowPanel)

        label = Label()
        label.Text = InfoTXT
        label.Top = 30
        label.Left = 50
        label.Height = STRheight
        label.Width = STRwidth

        button = Button()
        button.Text = "OK"
        button.Width = 100
        button.Top = FORMheight - 80
        button.Left = (FORMwidth / 2) - 50
        #print( button.Anchor)
        button.Anchor = AnchorStyles.Bottom

        button.Click += self.buttonPressed

        self.Controls.Add(label)
        self.Controls.Add(button)

    def buttonPressed(self, sender, args):
        Application.Exit()

def information(Message):
    Application.EnableVisualStyles()
    form = OKWindow(Message)
    Application.Run(form)

information('laber')    
于 2018-08-21T14:08:43.897 回答