Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Сначала Вам будет нужна некоторая библиотека GUI с привязкой Python и затем (если Вы захотите), некоторая программа, которая преобразует Ваши сценарии Python в автономные исполняемые файлы.
Межплатформенные библиотеки GUI с привязкой Python (Windows, Linux, Mac)
, Конечно, существуют многие, но самые популярные, которые я видел в дикой природе:
Полный список в http://wiki.python.org/moin/GuiProgramming
Единственный исполняемый файл (все платформы)
Single (Windows)
Единственный исполняемый файл (Linux)
Единственный исполняемый файл (Mac)
Другой системой (не упомянутый в принятом ответе все же) является PyInstaller, который работал на мой проект PyQt, когда py2exe не будет. Я нашел легче использовать.
Pyinstaller основан на Установщике Python Gordon McMillan. Который больше не доступен.
Альтернативный инструмент к py2exe bbfreeze, который генерирует исполняемые файлы для окон и Linux. Это является более новым, чем py2exe и обрабатывает яйца вполне хорошо. Я нашел, что это волшебно работает лучше без конфигурации для большого разнообразия приложений.
Существует также PyGTK, который является в основном оберткой Python для Инструментария Gnome. Я нашел легче перенести мой ум, чем Tkinter, происходящий из в значительной степени никакого знания GUI, программирующего ранее. Это работает вполне прилично и имеет некоторые хорошие учебные руководства. К сожалению, еще нет установщика для Python 2.6 для Windows и не может быть некоторое время.
Так как Python установлен почти на каждой ОС не-Windows по умолчанию теперь, единственная вещь, в которой действительно необходимо удостовериться, состоит в том, что установлены все нестандартные библиотеки, которыми Вы пользуетесь.
Однако возможно создать исполняемые файлы, которые включают интерпретатор Python и любые библиотеки, которыми Вы пользуетесь. Это, вероятно, создаст большой исполняемый файл, как бы то ни было.
MacOS X даже включает поддержку в IDE XCode для создания полных автономных приложений для GUI. Они могут быть выполнены любым пользователем рабочий OS X.
Для самого GUI:
PyQT является в значительной степени ссылкой.
Другой способ разработать быстрый пользовательский интерфейс состоит в том, чтобы записать веб-приложение, иметь выполненный локально и отобразить приложение в браузере.
Плюс, если Вы идете для опции Tkinter, предложенной lubos hasko Вы, может хотеть попробовать portablepy для имения выполнения приложения на среде Windows без Python.
Вам не нужно к компиляция Python для Mac/Windows/Linux. Это - интерпретируемый язык, таким образом, просто необходимо было установить интерпретатор Python в системе по Вашему выбору (это доступно для всех трех платформ).
Что касается библиотеки GUI, которая работает кросс-платформенная, библиотека Tk/Tcl виджета Python работает очень хорошо, и я верю, является достаточно кросс-платформенным.
Tkinter является интерфейсом Python к Tk/Tcl
От веб-страницы проекта Python:
Tkinter не является единственным инструментарием GuiProgramming для Python. Это - однако обычно используемое, и почти единственное, которое портативно между Unix, Mac и Windows
Я не уверен, что это - лучший способ сделать это, но когда я развертываю приложения для GUI Ruby (не Python, но имеет ту же "проблему", насколько .exe's затронут) в Windows, я просто пишу короткое средство запуска в C#, который обращается к моему основному сценарию. Это компилирует в исполняемый файл, и у меня тогда есть исполняемый файл приложения.