Я преподаю вводный класс по программированию и разработке GUI с использованием Python и обнаружил, что наименее подавляющее решение для начинающих студентов в программировании - это использование Visual Studio для разработки GUI.
В то время как разработка GUIопыт работы с C # и VB приятен, я не мог найти способ сделать то же самое с IronPython.Я установил IronPython 2.7.1, который включает в себя инструменты Visual Studio, и создал проект WPF IronPython.
Я могу использовать конструктор форм WPF так же, как VB и C #, однако я не смог найти удобный способ (т. е. понятным для студентов), в котором элементы GUI могут быть доступны.Например, с помощью VB вы можете ссылаться на элементы на основе их имени, а затем вы можете изменять свойства внутри них.Лучшее, что я мог сделать с IronPython (который я не планирую показывать студентам), это:
import wpf
from System.Windows import Application, Window
class MyWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'WpfApplication3.xaml')
def Button_Click(self, sender, e):
#This is the only way I could find in which I can
#access an element and modify its properties
self.Content.Children[1].Text += 'Hello World\n'
if __name__ == '__main__':
Application().Run(MyWindow())
Я заметил, что элементы GUI не получают имя, и Visual Studio вылетает всякий раз, когда яПопробуйте вручную изменить XAML для именования элементов.Вот сгенерированный XAML для простого фрейма с кнопкой и текстовой областью:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WpfApplication3" Height="300" Width="300">
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="103,226,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click" />
<TextBox Height="182" HorizontalAlignment="Left" Margin="24,21,0,0" VerticalAlignment="Top" Width="237" />
</Grid>
</Window>
Буду признателен за любую помощь в облегчении этого для студентов.Я также открыт для других предложений по разработке Python GUI, которые предлагают опыт, аналогичный Visual Studio.