IronPython和最新的Visual Studio 2019使Python桌面应用程序能够与WinForms控件一起使用。更重要的是,Telerik UI For WinForms套件有一些现成的功能来帮助你达成你所想要的效果!
IronPython是Python强大的开源版本,它是在Microsoft .NET框架上运行的Python编程语言的改编,IronPython可以使用.NET Framework和Python库,而其他.NET语言也可以轻松使用Python代码。
安装最新版本的IronPython之后,您可以打开Visual Studio 2019,该Studio带有用于“ IronPython Windows Forms Application”的内置模板项目,并创建您的第一个应用程序。
如何与你的程序完美集成
首先,您需要安装Telerik UI For WinForms UI组件套件 - 您可以从此处下载,然后将所需的Telerik程序集添加到项目文件夹中,以使用WinForms的RadGridView、FluentTheme和RadChartView(spoiler alert,稍后将需要它)控件。
要在应用程序中引用二进制文件,请导入clr库,然后使用addReference方法。在这里,您可以看到如何添加示例应用程序所需的参考和用法。
import clrimport randomclr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')
clr.AddReference('Telerik.WinControls')
clr.AddReference('Telerik.WinControls.UI')
clr.AddReference('Telerik.WinControls.ChartView')
clr.AddReference('Telerik.WinControls.Themes.Fluent')
clr.AddReference('TelerikCommon')
clr.AddReference('Telerik.WinControls.GridView')
from System.Drawing import *
from System.Windows.Forms import *
from Telerik.WinControls import *
from Telerik.WinControls.UI import *
from Telerik.Charting import *
from Telerik.WinControls.Themes import *
现在,让我们看一下如何添加radGridView控件,其中包含一堆不同的列。
#Define RadGridViewself.radGrid = RadGridView() self.radGrid.BestFitColumns()self.radGrid.ForeColor = Color.Blackself.radGrid.Dock = DockStyle.Fill
#Define Columnsself.decimalColumn = GridViewDecimalColumn()self.textBoxColumn = GridViewTextBoxColumn()self.colorColumn = GridViewColorColumn()self.checkBoxColumn = GridViewCheckBoxColumn()self.ratingColumn = GridViewRatingColumn()
self.decimalColumn.HeaderText = "DecimalColumn"self.textBoxColumn.HeaderText = "Text"self.colorColumn.HeaderText = "ColorColumn"self.checkBoxColumn.HeaderText = "CheckBoxColumn"self.ratingColumn.HeaderText = "RatingColumn"
self.radGrid.Columns.Add(self.decimalColumn)self.radGrid.Columns.Add(self.textBoxColumn)self.radGrid.Columns.Add(self.colorColumn)self.radGrid.Columns.Add(self.checkBoxColumn)self.radGrid.Columns.Add(self.ratingColumn)self.Controls.Add(self.radGrid)
#Populate Rowsfor index in range(10):self.radGrid.Rows.Add(index, "Sample Text " + str(index), Color.FromArgb(random.randint(1,255), random.randint(1,255), random.randint(1,255)), CheckState.Checked, random.randint(1,100))
该结果是一个radGridView,它具有以下列:GridViewDecimalColumn,GridViewTextBoxColumn,GridViewColorColumn,GridViewCheckBoxColumn,GridViewRatingColumn。
如图中所示,如果您想将主题应用于控件,这样就算简单的完成了。
fluent = FluentTheme()self.ThemeName = fluent.ThemeName self.radGrid.ThemeName = fluent.ThemeName
订阅事件并实现您的业务逻辑
这是创建RadButton控件并订阅其Click事件的示例。
#Define RadButton1self.myButton1 = RadButton()self.myButton1.Text = "RadButton1"self.myButton1.Click += self.OnButton1Clickself.Controls.Add(self.myButton1)
然后,您将必须定义OnButtonClick逻辑。
def OnButton1Click(self, sender, args):#TODO OnClick logic
现在,我们将在CellFormatting事件中实现一些逻辑,以便用不同的颜色填充GridViewRatingColumn中的单元格。Rating单元内的值可以在0到100之间,如果值<50,我们将用红色填充这些单元,否则我们将使用Aqua颜色。我们可以使用以下代码实现此结果:
def OnRadGridCellFormatting(self, sender, args):if args is not None :if args.Column.HeaderText == "RatingColumn" :if args.CellElement.RowInfo.Cells[4].Value is not None :if args.CellElement.Value > 50 : args.CellElement.DrawFill = Trueargs.CellElement.ForeColor = Color.Blueargs.CellElement.NumberOfColors = 1args.CellElement.BackColor = Color.Aquaelse :args.CellElement.DrawFill = Trueargs.CellElement.ForeColor = Color.Yellowargs.CellElement.NumberOfColors = 1args.CellElement.BackColor = Color.Redelse :args.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local)args.CellElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local)args.CellElement.ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local)args.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local)
CellFormatting最终结果是这样的:
Little Bonus Setup 示例
正如在radGridView示例中看到的那样,使用Telerik控件非常容易,我们来看另一个使用BarSeries设置radChartView控件的示例。
#Define RadChartViewself.chartView = RadChartView()self.chartView.Size = Size(290, 160)self.chartView.Dock = DockStyle.Fill
#Define BarSeries and CategoricDataPointsself.barSeries = BarSeries("Performance", "RepresentativeName")self.barSeries.Name = "Q1"self.categoricDataPoint1 = CategoricalDataPoint(177, "Harley")self.categoricDataPoint2 = CategoricalDataPoint(128, "White")self.categoricDataPoint3 = CategoricalDataPoint(143, "Smith")self.categoricDataPoint4 = CategoricalDataPoint(111, "Jones")self.barSeries.DataPoints.Add(self.categoricDataPoint1)self.barSeries.DataPoints.Add(self.categoricDataPoint2)self.barSeries.DataPoints.Add(self.categoricDataPoint3)self.barSeries.DataPoints.Add(self.categoricDataPoint4) self.chartView.Series.Add(self.barSeries)self.Controls.Add(self.chartView)
结果与您期望的Telerik UI for WinForms应用程序一样。
以上就是“visual studio python教程(Visual Studio中使用Python开发)”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/10928/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料