Перейти до основного вмісту

Як приховати wxMediaCtrl

Задача

Вчора переді мною постала цікава задача. Потрібно було приховати wxMediaCtrl, який займається програванням відео на формі. Взагалі, оскільки в wxPython все, що малюється, є вікном (window), переглянув методи wxWindow.

В лоб

Ну, логічно, що для приховання знадобиться метод Hide(), але тут-то і виявились граблі. Hide() дійсно ховає контрол, для чого він і призначений, але, з іншого боку, ламає позиціювання у всіх сайзерах, через що в мене всі інші контроли попливли. Звісно, якщо сайзери відсутні, і все позиціювання виконується в абсолютних координатах - ніяких проблем, Hide() підійде, але в моєму випадку - ні.

Неочікуване рішення

Переробляти все не хотілось, хоча і форма в мене, в принципі не ресайзиться, тому методом научного тика виявив, що проблему можна вирішити використанням методу Freeze(). Відповідно, обернений результат досягається методом Thaw().

Чому рішення неочікуване? Тому що я ніяк не очікував, що після виклику Freeze() контрол стане невидимим, власне, якщо звернутись до реалізації Freeze(), то можна виявити, що він попереджує будь-яку візуальні зміни об'єкта, незважаючи на роботу, яка над ним виконується.

Freeze

Сам по собі метод Freeze() цікавий тим, що дозволяє оптимізувати роботу вікон на етапі візуалізації. Наприклад, перед вставкою великої кількості елементів в комбо-бокс, варто йому зробити Freeze(), а після, - Thaw(). Таким чином, поки елементи вставляються, виклики перемалювання виконуватись не будуть.

Коментарі

Популярні дописи з цього блогу

Регулярні вирази в Python: вивчення та оптимізація

Writing a regular expression is more than a skill -- it's an art. Jeffrey Friedl Що це таке? Рано чи піздно майже кожному програмісту в своєму житті доводиться стикатись з регулярними виразами. Термін "Регулярні вирази" є перекладом з англійської словосполучення "Regular expressions" і не є зовсім точним, а для тих, хто перший раз почув цей термін, мабуть, навіть спантеличуючим (я, наприклад, коли вперше почув, ніяк не міг собі второпати по назві, хоча б приблизно, що це, і для чого використовується). Літературний і більш осмислений переклад звучав би, мабуть, як "шаблонні вирази". Але назва вже прижилась, а скажете "шаблонні вирази" - вас просто не зрозуміють :). Звідси: Регулярний вираз -  це рядок, що задає шаблон пошуку під-рядків в рядку. Регулярні вирази використовуються для аналізу текстів на предмет відповідності текстової інформації деякому шаблону. Наприклад , шаблон, що задає слово, яке містить букву "к". Де застосовують...

Переходимо на Python 3. Де ж ти, reduce?

Це мій другий пост про освоєння Python 3. Почався він з того, що захотілось мені використати всім відому вбудовану функцію reduce, а я замість робочого коду отримав NameError . Виявляється в Python 3 вона вже не вбудована, а знаходится в модулі functools , в який, починаючи з версії Python 2.5, засунули декілька корисних речей для роботи з об'єктами-функціями. Тобто тепер функцію reduce потрібно імпортувати. from functools import reduce Варто зазначити, що специфікація функції не змінилась, працює вона точно так, як і в другому пітоні. Постало питання: "Навіщо?". (Більш детально про reduce читаємо в документації ). З чого все почалось? А почалось все з Гвідо ван Россума, який сказав наступне, коли тільки Python 3k починали розробляти. Ось довільний переклад: Близько 12 років тому в Python з'явились lambda, reduce(), filter() і map(); з'явились вони через (здається) Lisp-хакера, якому не вистачало їх в Python, і який надав працюючі патчі. Але, незважаючи ні на щ...

Як перейти з PHP на Python

Вступ Останнім часом на форумах часто почали з'являтись теми про те, як перейти з php на python. Звісно ж, тут я буду розглядати лише веб-розробку. В цій статті я хотів би роз'яснити деякі моменти, щоб php-розробникам, які, все-таки, вирішили починати розробляти веб-додатки на python було зрозуміло, що тут та як. Як працює php? Для початку візьмемо до уваги, що PHP з самого початку задумувався і розроблявся виключно як мова для веб-розробки, і в 99.9% випадків для цього і використовується (можна, звичайно, писати і GUI-додатки, наприклад, для цього є GTK-біндінги). Говорячи про те, як працює PHP, я маю на увазі те, як прийнято в більшості випадків розробляти веб-додатки на PHP. Я не буду заглиблюватись в організацію інтерпретатора, розширення, MINT, та ін.. Для максимальної простоти приймемо інтерпретатор PHP за деяку окрему сутність. В загальному випадку, все відбувається приблизно так: Тобто, в найпростішому випадку, ми створюємо html-сторінку, всередині якої знаходяться б...