Ошибка Pythonnet: XamlParseException: «Не удалось создать «Клик» из текста»Python

Программы на Python
Ответить
Anonymous
 Ошибка Pythonnet: XamlParseException: «Не удалось создать «Клик» из текста»

Сообщение Anonymous »

Раньше я работал над IronPython (с WPF для разработки некоторых графических интерфейсов), а недавно начал пробовать pythonnet.

Но я обнаружил, что файл xaml, который работал на IronPython, не работает на CPython + pythonnet. В IronPython я могу определить Button.Click в файле xaml, но в CPython это кажется невозможным. Я пытался найти ответы, но ничего существенного не нашел. Надеюсь, вы сможете спасти меня здесь...

Вот мой основной сценарий:

Код: Выделить всё

import clr
clr.AddReference(r"wpf\PresentationFramework")
from System.IO import StreamReader
from System.Windows.Markup import XamlReader
from System.Windows import Application, Window
from System.Threading import Thread, ThreadStart, ApartmentState

class MyWindow(Window):
def __init__(self):
stream = StreamReader('test.xaml')
window = XamlReader.Load(stream.BaseStream)
Application().Run(window)

def Button_Click(self, sender, e):
print('Button has clicked')

if __name__ == '__main__':
thread = Thread(ThreadStart(MyWindow))
thread.SetApartmentState(ApartmentState.STA)
thread.Start()
thread.Join()
А вот test.xmal:
Я получил сообщение об ошибке:

Необработанное исключение: Python.Runtime.PythonException: XamlParseException : «Не удалось создать «Клик» из текста «Кнопка_Клик».» Номер строки «6» и позиция строки «132».

Как ни странно, если я загружаю тот же xaml и сохраняю ту же структуру классов в IronPython, скрипт работает просто отлично:

Код: Выделить всё

import wpf
from System.Windows import Application, Window

class MyWindow(Window):
def __init__(self):
self.ui = wpf.LoadComponent(self, 'test.xaml')

def Button_Click(self, sender, e):
print('Button has clicked')

if __name__ == '__main__':
Application().Run(MyWindow())
Большое спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/524 ... m-the-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»