IronPython 是一种动态脚本语言;它在运行时从脚本文件本身进行解释,而不是编译成程序集。由于没有已编译的程序集,因此您不能拥有嵌入式资源。以下是在 IronPython 中向表单添加图标的两种方法:
首先,您可以将图标作为松散文件包含在 python 脚本旁边。然后,您可以通过将图标文件名传递给 System.Drawing.Icon 构造函数来创建图标对象。这是此场景的一个示例,其中主要的 python 脚本和图标部署在同一目录中。该脚本使用此处找到的解决方案来查找目录。
import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')
import os
import __main__
from System.Drawing import Icon
from System.Windows.Forms import Form
scriptDirectory = os.path.dirname(__main__.__file__)
iconFilename = os.path.join(scriptDirectory, 'test.ico')
icon = Icon(iconFilename)
form = Form()
form.Icon = icon
form.ShowDialog()
或者,您可以加载一个图标,该图标作为嵌入资源包含在用 C# 编写的 .NET 程序集中,例如。
import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')
from System.Drawing import Icon
from System.Reflection import Assembly
from System.Windows.Forms import Form
assembly = Assembly.LoadFile('C:\\code\\IconAssembly.dll')
stream = assembly.GetManifestResourceStream('IconAssembly.Resources.test.ico')
icon = Icon(stream)
form = Form()
form.Icon = icon
form.ShowDialog()