pythonnet 是pythonhe.net通用的神器不多先容了.
这次这基本上跟python没有关系了.
和winform一样先导包
- import clr
- clr.AddReference("PresentationFramework.Classic, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
- clr.AddReference("PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
-
- from System.Windows import Application
- from System.Windows import Window
- from System.Windows import MessageBox
- from System.Windows import LogicalTreeHelper
- from System.Windows.Markup import XamlReader
- from System.Threading import Thread
- from System.Threading import ApartmentState
- from System.Threading import ThreadStart
- from System import *
-
复制代码 哈哈哈 有没有感觉和 C#一样.
- using System;
- using SC = System.Console;
复制代码 是不是千篇一律;
接下来: 写个类. 固然你可以用C# VB.net单独做 成DLL也没关系. 重要的是先把婚结了 孩子生出来. 不对 先把东西生产出来.
- class MainWindow(Window):
-
- def __init__(self):
- Window.__init__(self)
-
- # XAML
- xaml = """
- <Page
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition/>
- <RowDefinition/>
- </Grid.RowDefinitions>
- <Button Name="Button1" Grid.Row="0">Button 1</Button>
- <Button Name="Button2" Grid.Row="1">Button 2</Button>
- </Grid>
- </Page>
- """
- page = XamlReader.Parse(xaml)
-
- # connect Button1
- self.Button1 = LogicalTreeHelper.FindLogicalNode(page, "Button1")
- self.Button1.Click += self.Button1_Click
-
- # connect Button2
- self.Button2 = LogicalTreeHelper.FindLogicalNode(page, "Button2")
- self.Button2.Click += self.Button2_Click
-
- #
- self.Title = "Python WPF App with XAML!"
- self.Width = 350
- self.Height = 300
- self.Content = page
-
- def Button1_Click(self, sender, e):
- MessageBox.Show(self.Button1.Content + " is clicked!")
-
- def Button2_Click(self, sender, e):
- MessageBox.Show(self.Button2.Content + " is clicked!")
复制代码
- def STAMain():
- app = Application()
- app.Run(MainWindow())
-
- def main():
- t = Thread(ThreadStart(STAMain))
- t.ApartmentState = ApartmentState.STA
- t.Start()
- t.Join()
-
- if __name__ == "__main__":
- main()
复制代码 界面肯定要线程里面; 要否则python表明器会卡死.
固然 你也可以这么干;用C#界面类库打包写成DLL在用python调用. python只管传参数.
对于性能要求不高的场所就很合适.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |