Я не думаю, что ipady
вполне делает то, что вы думаете, что делает. Следует признать, что документация немного неясна по этому вопросу. Это не добавляет эквивалент внутреннего поля. Вместо этого он просто добавляет столько пикселей к высоте виджета, и пиксели добавляются на внутренней стороне границы, а не на внешней стороне. Он не блокирует использование этих пикселей.
Если ваш кадр обычно имеет высоту 20 пикселей, то с ipady=50
ваш виджет теперь будет иметь высоту 120 пикселей (50 * 2 + 20). Любые виджеты, добавленные внутри этого фрейма, могут использовать все пространство внутри фрейма. Таким образом, когда вы используете grid
для помещения чего-либо в нулевую строку, оно все равно будет отображаться в самой верхней части кадра, чуть ниже границы.
Это именно то, что я вижу в вашем коде. На моей машине frame2 без ipady=50
имеет высоту 20 пикселей. Когда я добавляю ipady=50
, рамка становится 120 пикселей в высоту. Метка появляется в самом верху рамки, поскольку она была помещена в нулевую строку.
TL; DR: не думайте о том, что ipady говорит «мне нужно так много внутреннего поля», а скорее «мне нужно гораздо больше дополнительного пространства внутри».
Почему бы не использовать гибрид обоих? Это обычно - путь, которым большая разработка идет в эти дни.
Я предложил бы Lua/C ++ или комбинация Python/C++ (я не уверен, как хорошо комбинация Perl/C++ работает, но это может быть хорошим вариантом также).
Лично я сделал набор с Lua/C ++ комбинация, и это довольно фантастически.
Я - и C++ и программист Perl. C++ является хорошим языком, но каждый раз, когда у меня есть выбор, я иду с Perl, так как разработка просто продолжается настолько более быстро.
Несколько комментариев:
Пойдите с C++. Таймеры, поточная обработка, аудио, SDL, wxwidgets, это все вещи, которые Perl может сделать, но действительно не выделяется в. Кроме того, ПАРИТЕТ или perl2exe являются неуклюжими механизмами для распределения. Они работают, но они не идеальны. Между тем C++ (и я высоко поощряю Вас смотреть на использование Повышения), соответствовал бы приятно этой роли.
Большой причиной использовать Perl является метапрограммирование.
Perl достаточно гибок, чтобы позволить Вам написать код для написания кода (это - то, как Американский лось делает свое волшебство). Вы сэкономите время и сократите количество ошибок, которые необходимо раздавить.
Большой причиной использовать Perl является CPAN.
У меня есть ПАРИТЕТ использования к пакету существенная программа Perl/Tk для Windows. Потребовалось немного игры, но это работало.
Если Вы, по крайней мере, столь же испытаны в Perl как в C++, разработка в Perl должна быть быстрее. Но скорости во время выполнения для эквивалентной программы будут медленнее. Вся остальная часть Ваших критериев может быть удовлетворена также, таким образом, я сказал бы, что она сводится к личному выбору.
Лично? Я говорю, не застревают на этом слишком долго. Существуют за и против движения так или иначе, но оно кажется, что Вы добираетесь опасно близко к застреванию при "аналитическом параличе". Если ничто иное, бросьте монетку или выберите ту, которая Вы думаете, имеет самое симпатичное имя.
Запишите свою базовую функциональность в C++, затем запишите фронтенд для своего приложения в инструменте для рассматриваемой платформы, т.е. Какао для Mac OS X.NET/Delphi/MFC для Windows, и т.д.
Это - мой предпочтительный способ разработать межплатформенные настольные приложения. Конечно, я знаю так очень мало о том, что Вы пытаетесь выполнить, таким образом, это может быть слишком толстым для Вас.
Функция важна. Код, независимо от языка, сделает подобные вещи, особенно при пользовании теми же библиотеками и компонентами. Если Вам не разработали точную функцию через библиотеки и инструментарии, моделируете ее в Perl.
Существует аргумент, что разработка займет меньше времени в динамические языки. Существуют подобные проблемы в Perl и C++ в получении выпадающего в правильном месте, заполняя его правильными значениями, внося надлежащее изменение в состоянии программы от ввода данных пользователем.
Если Perl не делал его на определенных платформах, преобразуйте код к C++.
Существуют, вероятно, некоторые указатели, которые помогли бы в этом подходе:
Это означает вероятную запись прототипа с Perl OO. После того как Вам закрепили высокоуровневую функциональность на одной платформе - при условии, что можно получить это далеко в Perl - затем, C++ является более или менее оптимизацией.
Возможно, Вы могли бы ограничить прототип более или менее родственникам C++. Но я не уверен в этом, можно анализировать a map
в цикл или даже просто заменяют его функцией фильтра, вызванной с указателем функции для тестовой функции.