wxPython: как положить одну панель поверх другой - PullRequest
2 голосов
/ 19 августа 2011

Это примерно wxPython.

Я бы хотел, чтобы 2 панели располагались одна над другой:
PanelBG должен быть своего рода "фоном", со своим собственным GridBagSizer с подпанелями,StaticTexts и т. Д .;
PanelFG должна быть панелью «переднего плана», также с собственным GridBagSizer с некоторыми StaticTexts, кнопками ... но прозрачным фоном, таким образом, чтобы PanelBG был виден везде, где бы PanelFG не накладывает виджеты.

Мне нужно, чтобы обе панели растягивались по всем сторонам рамки, даже при изменении размера окна, хотя никогда не меняли взаимные пропорции, поэтому я не уверен, что естьспособ использовать абсолютное позиционирование.

Если вам интересно, причина, по которой я не хочу использовать одну панель, состоит в том, что объединение 2-х GridBoxSizer потребовало бы от меня размещения гораздо большего количества ячеек в классификаторе,потому что строки и столбцы переднего плана и фона не всегда совпадают, и я должен разделить их на много ячеек, с размерами сетки, растущими до стаs ** 2.
Поскольку содержимое, которое я хочу поместить на передний план, необходимо обновлять и обновлять довольно часто, для этого потребуется каждый раз перерисовывать все ячейки, что для завершения операции займет 10-20 секунд (протестировано).Для обновления только переднего плана потребуется всего несколько сотых секунды.

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 августа 2011

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

В частности, я имею в виду wxWebKit (http://wxwebkit.kosoftworks.com/),, который позволил бы вам создавать слои и т. Д. С использованием механизма рендеринга браузера WebKit. Я не уверен, что это на этапе, который обеспечит все, что вам нужно, так как я на самом деле его не использовал, но даже если он не работает, возможно, стоит попробовать этот подход - использовать HTML / CSS для части вашего дисплея, в то же время оборачивая все это в приложение wxPython.

0 голосов
/ 19 августа 2011

Насколько я понимаю, это календарь с прямоугольниками для дней, содержащий события для дней.

Простым было бы использовать wxGrid с семью столбцами и четырьмя или пятью строками, чтобыпредставлять месяцы.Затем вы поместите события в ячейку сетки для правильной даты.Виджет wxGrid будет следить за деталями правильного обновления всего.

Используя wxGrid, вы можете потерять небольшой контроль над точным внешним видом, хотя wxGrid очень гибок и многофункциональн, когда вы изучите его множество методов, но вы быизбавьте себя от необходимости писать большие объемы кода, которые потребуют значительных усилий для отладки.

...