Как добавить пользовательские виджеты в wxglade

У меня есть приложение, которое я сделал с помощью wxglade. Я добавил медиаконтроль для воспроизведения mp3:s. Без mediacontrol приложение запускается с фреймом 800x600px. Но когда я добавляю mediacontrol, кадр очень маленький. Я считаю, что это потому, что я не добавил его в классификатор. Но я должен сделать это? Медиаконтроль не должен ничего показывать.

Итак, мой вопрос: как мне добавить mediacontrol в мое приложение, не нарушая (а) возможности обновления графического интерфейса с помощью wxglade и (б) не теряя возможности начать с нужного размера?

Если бы я мог, я бы ничего не поставил между # Begin wxglade а также # End wxglade, Потому что тогда он будет уничтожен, если я изменю свой графический интерфейс с помощью wxglade (в любом случае, согласно более ранним тестам).

Изменить: фрагмент кода, который я предоставил, не добавляет ничего интересного. Я также отредактировал вопрос, чтобы сделать его более понятным, чтобы другие люди с таким же вопросом могли найти этот ответ.

1 ответ

Решение

Быстрый трюк:

  1. В том месте, где должен быть виджет, вставьте wx.Panel с wxGlade и дать ему имя mymediactrl вместо, например, mypanel,
  2. Затем, после того как ваш сценарий сгенерирован, импортируйте (или вставьте код) ваш класс MediaControl в место, разрешенное (недоступное для записи) с помощью wxglade (в пространстве за пределами разделов, ограниченных '# begin wxGlade' и '# end wxGlade теги).
  3. Наконец, измените вручную mymediactrl=wx.Panel(...) строка в сценарии с вашим mymediactrl = MediaControl(...) линия. Примечание. Эта строка должна сохраняться вручную при изменении вашего графического интерфейса, поскольку wxglade перезапишет его.

Правильный путь:

Вы можете использовать виджет CustomWidget из набора виджетов wxglade. Это рекомендуемый метод, если у вас есть опыт работы с wxglade.

Pro метод:

Вы можете добавить свой собственный виджет в набор виджетов wxglade. У вас есть пример и учебник о том, как это сделать здесь

Другие вопросы по тегам