ToB企服应用市场:ToB评测及商务社交产业平台
标题:
python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML
[打印本页]
作者:
我可以不吃啊
时间:
6 天前
标题:
python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML
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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4