在WinForm pythonnet上添加UserControl

时间:2018-01-31 04:03:51

标签: python .net winforms python.net pythonnet

我正在尝试使用PythonNet将UserControl添加到WinForm但没有任何运气。为了测试,我添加了一个按钮,显示但不是UserControl,我不确定我做错了什么。

所有代码都可以放在一个py文件中。我闯入了几个部分,希望它更容易阅读。

用户控制

class Field(WinForms.UserControl):

    def __init__(self):
        self.InitializeComponents()
        pass

    def InitializeComponents(self):
        self.components = System.ComponentModel.Container()

        self.label = WinForms.Label()
        self.textBox = WinForms.Label()


        ## Label
        # self.label.Anchor = ((WinForms.AnchorStyles)(
        #     ((WinForms.AnchorStyles.Top | WinForms.AnchorStyles.Bottom)
        #      | WinForms.AnchorStyles.Left)))
        self.label.AutoSize = True
        self.label.Location = System.Drawing.Point(3, 7)
        self.label.Name = "label"
        self.label.Size = System.Drawing.Size(29, 13)
        self.label.TabIndex = 0
        self.label.Text = "label"


        ## TextBox
        # self.textBox.Anchor = ((WinForms.AnchorStyles)(
        #     (((WinForms.AnchorStyles.Top | WinForms.AnchorStyles.Bottom)
        #       | WinForms.AnchorStyles.Left)
        #      | WinForms.AnchorStyles.Right)))
        # self.textBox.Location = System.Drawing.Point(115, 3)
        self.textBox.Name = "textBox"
        self.textBox.Size = System.Drawing.Size(260, 20)
        self.textBox.TabIndex = 1


        ## Control
        self.AutoScaleMode = WinForms.AutoScaleMode.Font
        self.Controls.Add(self.textBox)
        self.Controls.Add(self.label)
        self.Name = "Field"
        self.Size = System.Drawing.Size(378, 26)
        # self.PerformLayout()

父母表格

class ParentForm(WinForms.Form):

    def __init__(self):
        self.InitializeComponents()

    # region Form Design

    def InitializeComponents(self):
        self.components = System.ComponentModel.Container()
        self.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        self.ClientSize = System.Drawing.Size(385, 180)
        self.Name = "ParentForm"
        self.Text = "Parent Form"


        self.field1 = Field()
        self.field1.Location = Point(13, 13)
        self.field1.Name = "field1"
        self.field1.Size = Size(378, 26)
        self.field1.TabIndex = 1
        self.Controls.Add(self.field1)


        self.button1 = WinForms.Button()
        self.button1.Location = Point(13, 50)
        self.button1.Size = Size(50, 20)
        self.button1.Text = "Button1"
        self.Controls.Add(self.button1)
        pass


    def Dispose(self):
        self.components.Dispose()
        WinForms.Form.Dispose(self)

入境点和进口

import clr
import System
import System.Windows.Forms as WinForms

from System.IO import File
from System.Text import Encoding
from System.Drawing import Color, Point, Size
from System.Threading import ApartmentState, Thread, ThreadStart



def appThread():
    app = ParentForm()
    WinForms.Application.Run(app)
    app.Dispose()


def appEntry():
    thread = Thread(ThreadStart(appThread))
    thread.SetApartmentState(ApartmentState.STA)
    thread.Start()
    thread.Join()


if __name__ == '__main__':
    appEntry()

0 个答案:

没有答案