Как добавить пользовательские виджеты в wxglade
У меня есть приложение, которое я сделал с помощью wxglade. Я добавил медиаконтроль для воспроизведения mp3:s. Без mediacontrol приложение запускается с фреймом 800x600px. Но когда я добавляю mediacontrol, кадр очень маленький. Я считаю, что это потому, что я не добавил его в классификатор. Но я должен сделать это? Медиаконтроль не должен ничего показывать.
Итак, мой вопрос: как мне добавить mediacontrol в мое приложение, не нарушая (а) возможности обновления графического интерфейса с помощью wxglade и (б) не теряя возможности начать с нужного размера?
Если бы я мог, я бы ничего не поставил между # Begin wxglade
а также # End wxglade
, Потому что тогда он будет уничтожен, если я изменю свой графический интерфейс с помощью wxglade (в любом случае, согласно более ранним тестам).
Изменить: фрагмент кода, который я предоставил, не добавляет ничего интересного. Я также отредактировал вопрос, чтобы сделать его более понятным, чтобы другие люди с таким же вопросом могли найти этот ответ.
1 ответ
Быстрый трюк:
- В том месте, где должен быть виджет, вставьте
wx.Panel
с wxGlade и дать ему имяmymediactrl
вместо, например,mypanel
, - Затем, после того как ваш сценарий сгенерирован, импортируйте (или вставьте код) ваш класс MediaControl в место, разрешенное (недоступное для записи) с помощью wxglade (в пространстве за пределами разделов, ограниченных '# begin wxGlade' и '# end wxGlade теги).
- Наконец, измените вручную
mymediactrl=wx.Panel(...)
строка в сценарии с вашимmymediactrl = MediaControl(...)
линия. Примечание. Эта строка должна сохраняться вручную при изменении вашего графического интерфейса, поскольку wxglade перезапишет его.
Правильный путь:
Вы можете использовать виджет CustomWidget из набора виджетов wxglade. Это рекомендуемый метод, если у вас есть опыт работы с wxglade.
Pro метод:
Вы можете добавить свой собственный виджет в набор виджетов wxglade. У вас есть пример и учебник о том, как это сделать здесь