Ironpython Studio формы - PullRequest
       12

Ironpython Studio формы

1 голос
/ 12 декабря 2008

Это вопрос из двух частей. Тупой технический запрос и более широкий вопрос о моем, возможно, ошибочном подходе к обучению выполнению некоторых вещей на языке, на котором я новичок.

Я просто играю с несколькими библиотеками Python GUI (в основном это wxPython и IronPython) для работы, которую я собираюсь выполнить в приложении с открытым исходным кодом, просто чтобы улучшить свои навыки и т. Д.

Днем я довольно стандартный c # bod, работающий с довольно нормальным набором инструментов на основе MS, и я смотрю на Python, чтобы дать мне новую перспективу. Таким образом, использование Ironpython Studio, вероятно, немного обманывает (хорошо, много). Кажется, это не имеет значения, потому что как бы сильно он не выглядел как проект Visual Studio и т. Д. Есть одно простое поведение, которое я, вероятно, слишком глуп, чтобы реализовать.

т.е. Как мне сохранить мои формы в отдельных отдельных файлах кода, как обезьяна c #, которой я всегда был, и при этом вызывать их друг от друга? Я попытался импортировать форму для вызова в основную форму, но я просто не могу получить форму, которая будет распознаваться как что-либо, кроме объекта. Новая форма выглядит как объект формы в своем собственном файле кода, я импортирую clr. Я пытаюсь вызвать метод «Показать» формы. Разве это не правильно?

Я пробовал несколько (на мой взгляд, более маловероятных) способов обойти это, но проблема кажется неразрешимой. Является ли это чем-то, чего я просто не вижу, или было бы для меня более уместным изменить то, как я думаю о своем сценарии GUI, чтобы он соответствовал Python (в этом случае я могу переключиться обратно на wxPython, который казался более доступным из Pythonic точка зрения), а не пытаться взглянуть на Python с точки зрения безопасности оболочки Visual Studio?

Ответы [ 2 ]

1 голос
/ 12 декабря 2008

Мне не совсем понятна проблема. Конечно, вы можете определить подкласс System.Windows.Forms.Form в IronPython в одном модуле, а затем импортировать подкласс формы в другом модуле:

# in form.py
from System.Windows.Forms import Form, Button, MessageBox
class TrivialForm(Form):
   def __init__(self):
       button = Button(Parent=self, Text='Click!')
       button.Click += self.show_message

   def show_message(self, sender, args):
       MessageBox.Show('Stop that!')

# in main.py
import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Application
from form import TrivialForm
if __name__ == '__main__':
   f = TrivialForm()
   Application.Run(f)

Неужели конструктор форм / генератор кода IronPython Studio не позволит вам так структурировать свой код? (Я никогда не использовал это.)

0 голосов
/ 12 декабря 2008

В конце концов, это было еще проще.

Я пытался вызвать подчиненную форму следующим образом:

f = frmSubform ()
f.Show ()

Но мне действительно нужно было сделать это таким образом

f = frmSubform ()
Form.Show (е)

Form.ShowDialog (f) также работает; в формате диалога, конечно.

Достаточно простая ошибка, но пока вы не знаете, ну, не знаете.

Я не уверен на 100%, что понимаю на данном этапе, почему то, что работает, работает, но я уверен, что буду учиться с опытом.

...