Мы собираемся создать небольшую программу с PyGTK 3.0, которая также работает с PyGTK 3.4. Этот небольшой графический интерфейс научит вас, как разделить программу на два или более файлов.
Вы можете посетить учебник Себастьяна Пёльстерла по новому PyGTK 3, вот новый учебник, я оставляю ссылку:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Это блог Себастьяна.
Критика этого руководства со стороны Себастьяна заключается в том, что в нем не учат, как разделить программу на части или на несколько файлов, было бы хорошо, если бы он показал пример того, как это сделать с PyGTK 3.
Все большие и сложные программы делятся на множество файлов, и файлы даже помещаются в другие каталоги, то есть они находятся в разных папках.
Начнем с небольшого примера:
Вот код записи в одном файле с именем gui.py. Мы открываем текстовый редактор Gedit или редактор, который используем чаще всего, копируем приведенный ниже код и сохраняем его как gui.py
from gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "Кнопка \" Open \ "была нажата" def on_close_clicked (self, button): print "Closing application" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Close') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): print "Была нажата кнопка \" Открыть \ ""
Это функция, которая активируется в терминале, когда мы нажимаем кнопку открытия. Сигнал для его активации:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Закрытие приложения" Gtk.main_quit ()
Это функция, которая активируется, когда мы нажимаем кнопку закрытия.
закройте программу, которую мы запускаем.
сигнал для его активации
self.button.connect ("clicked", self.on_close_clicked) из gi.repository import Gtk ### мы вызываем библиотеки PyGTK ### class gui (): ### определение класса под названием gui является основным классом # ##
Объявление виджетов: виджеты - это программа, предопределенная библиотеками графического интерфейса, которые мы используем. Например, виджеты - это кнопка, окно, поле и т. Д. Это виджеты, которые мы объявляем в нашей программе.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # кнопка открытия #### self.button = Gtk.Button (label = 'Close') #### кнопка закрытия #### self.window.add (self.box) #### поле содержится в окно с именем window #### self.box.pack_start (self.button, True, True, 0) ##### кнопка содержится в поле с именем box ### self.window.show_all () ## # мы показываем все окно ### gui = gui () ### создаем объект gui ####
Помещаем нашу программу в папку с названием simple в нашем случае на рабочем столе.
Открываем папку с терминалом, в моем случае я использую Nemo от Linux Mint 14.
Для компиляции вставляем в терминал python gui.py
увидеть картинку.
Теперь мы можем увидеть нашу небольшую программу или новый виджет, созданный с помощью библиотек PyGTK 3.
Это простое окно с двумя кнопками.
Теперь мы разделим программу на три части, затем я оставлю код для трех файлов.
Первый файл gui.py
from gi.repository import Gtk from destroy import destroy from io import io class gui (destroy, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("нажал", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start ( self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
Второй файл io.py
class io: def on_open_clicked (self, button): print "Была нажата кнопка \" Открыть \ ""
Третий файл destroy.py
из gi.repository import Gtk class destroy: def on_close_clicked (self, button): print "Закрытие приложения" Gtk.main_quit ()
Мы помещаем три файла в одну папку в нашем случае, папка называется простой разделенной.
Чтобы скомпилировать три файла. Открываем папку с терминалом и просто кладем обратно в терминал
python gui.py
Изменения, внесенные в код gui.py
from destroy import destroy ### statement для импорта нашего файла destroy.py ### from io import io ### statement для импорта нашего файла io.py ### class gui (destroy, io): #### в класс main добавляем подклассы destroy и io ####
Вы можете видеть, что предложение
def on_open_clicked (self, button): print "Была нажата кнопка \" Открыть \ ""
Его нет в gui.py, он находится в файле io.py
Приговор
def on_close_clicked (self, button):
распечатать "Закрытие заявки"
Gtk.main_quit ()
он находится в файле destroy.py
Таким образом, мы можем разделить программу на множество файлов, находящихся в разных каталогах одновременно.
С другой стороны, Python - это столп бесплатного программного обеспечения, и он адаптирован для работы с GTK 3.6 /3.8, его имя - PyGTK. Адаптация Python для KDE называется PyQT.
Python адаптирован для Mac OS и WINDOWS.
Я надеюсь, что это мини-руководство по PyGTK3 было для вас полезным. Они могут высказывать любую конструктивную критику, какую захотят.
Я также знаю некоторые Gtk 3.4 /3.6 и Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Наконец, пользователи KDE приносят свои извинения за то, что не сделали мини-руководство по KDE.
В kde я предпочитаю использовать kdevelop (я думаю, так он называется) для удобного создания графического интерфейса, но мне все еще трудно найти процессы, чтобы это произошло x вещь: '(
Отлично подходит для тех из нас, кто использует Python: D!
Привет!
Здравствуйте, я слежу за этим сообществом в течение долгого времени, и я не очень уверен, впервые ли я комментирую или я уже делал это раньше 😀 (на самом деле я не очень люблю писать комментарии в Интернете). Дело в том, что я делаю это, чтобы оставить предложение для Elav и KZKG ^ Gaara в качестве администраторов, и я думаю, что было бы неплохо добавить плагин для раскраски синтаксиса сейчас, когда в последнее время я вижу больше сообщений с кодом на разных языках программирования. Я знаю, что существует довольно много плагинов, но я не пробовал ни одного, поскольку не являюсь пользователем wordpress, поэтому я оставляю вас думать о жизнеспособности запроса. Я пользуюсь этой возможностью, чтобы спросить остальных читателей, что они думают об этой идее, потому что я знаю, что есть люди, которые предпочитают читать код без каких-либо украшений. Я прошу прощения, если это уже было здесь прокомментировано и было отклонено по какой-то причине, так как я не помню, чтобы я видел какое-либо обсуждение по этому поводу.
Правда в том, что я хотел бы иметь возможность раскрашивать синтаксис, чтобы выделить код языков программирования.
Это поможет пользователям, которые хотят изучать языки программирования.
Но я тоже доволен форумом, и мы можем обсуждать и учиться вместе.
GNU Emacs более удобен, так как, по крайней мере, вы должны выбрать, с каким средством проверки языка программирования вы хотите работать (если вы не хотите, чтобы ваш процессор был тяжелее, используйте GNU Nano и наслаждайтесь минимализмом в лучшем виде).
Элио, мы говорим о WordPress. Реализовано в блоге Desde Linux. В нем нет функций раскрашивания букв постов.
Ой, простите.
Naaa emacs удобен для тех, у кого 84 пальца XD .., нормальных людей, textmate, sublimetext или notepad ++ xd
Невероятно, если вы не научились печатать, что необходимо для правильной работы с GNU Emacs и его сочетаниями клавиш. Кроме того, его графический интерфейс позволяет легко использовать его меню (его можно использовать в Windows, но не рекомендуется делать это в обычном режиме, а в режиме командной строки, чтобы win32 не бойкотировал ваш сценарий).
Очень крутой учебник. Но, кстати, исходный код python не компилируется, это интерпретируемый язык.
Его можно скомпилировать в псевдокод. Это не машинный язык, а байты, которые что-то представляют интерпретатору, но процесс также называется скомпилированным. В этом смысле можно сказать, что что-то скомпилировано.
Возможно, лучше изучить pytgk2, потому что последняя доступная версия для Windows - 2.24. Серия 3 примечательна своим отсутствием. И плохие языки говорят, что gnome ломает все apis в каждой новой версии.
Я программирую макет с помощью GTK 3.4 / 3.6, и правда в том, что они ломают ваше терпение и голову, вам нужно переписать код, теперь я понимаю, почему люди из Linux Mint жалуются на GTK и проект GNOME.
Для тех, кто работает в MINT, я согласен с GTK 2.4, этого не произошло.
Хороший учебник и ссылки.
Просто деталь, поскольку код был вставлен, в Python отступы являются обязательными и должны соблюдаться в примере кода.
Привет!
Не могли бы вы объяснить, из чего состоят обязательные идентификаторы в Python? Честно говоря, я никогда не слышал об этом. Я плохо привык к форуму PyGTK 2/3 на английском языке и, возможно, не замечаю этого.
В Python вы не используете ключи, как в C, или блоки begin / end, как в Pascal, но все понимается через отступ, который вы даете коду. То есть блоки распознаются как имеющие отступ. Это функция, которая мне особенно нравится. Вы избегаете писать ключи и тому подобное.
Мне это просто не нравится, кажется, проще поставить две маленькие клавиши или std :: endl;, чем быть видимым, если строка xd хорошо табулирована
: p Ваш учитель программирования поставит вам 0. Или того хуже, они уволят вас с работы. Важнее всего то, что код можно читать со всеми вытекающими
заканчивая закрывающими скобками, это делает меня более читаемым XD ..
Шутки в сторону???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Видишь ли? Без углублений это не очень хорошо понимается. И это очень просто. С более сложным это понимает только компилятор. Дело в том, что если вы все равно ДОЛЖНЫ делать отступы (чтобы люди понимали код), почему он должен быть избыточным и использовать разделители? Хватит с отступом и все.
Конечно, ничего не понимается, потому что вы не соблюдаете правила хорошего написания программ на c / c ++. То, что вы сделали, действительно для чего угодно, например, для вложения функции в функцию внутри другой функции, которая находится внутри другой, тогда я хочу увидеть вас xd, если вы можете это понять.
кстати, на два взгляда этот код легко понять xD
То, что я сделал, я сделал специально, чтобы показать вам, что без отступов, даже если он компилируется, очень трудно понять любой код. Итак, у вас есть 2 правила: отступ и заключить с помощью разделителей. Но это лишнее. В Python такой код просто не принимается интерпретатором. И у вас есть только одно правило: отступ. Легко.
Но привет, у каждого свои вкусы.
Оба хороши, с отступом и без отступа, на мой взгляд, я предпочитаю стиль точки с запятой или рубин, аналогичный python, но отступ не нужен.
Это лучше понять: P:
echo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {case 'v': verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »Плохая опция% s \ n », argv [1]); usage ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1) { do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
Привет 😀
Я думаю, что Карлос имеет в виду, что там, где выходит код, нет отступов. Это с копированием и вставкой просто не сработает. Я не знаю, существует ли тег при создании сообщения
ввести код языка. Хорошо бы поставили, если его нет.
Я уже видел, в чем проблема: тег CODE удаляет все пробелы и табуляции (он не должен этого делать !!!) Но если вы поместите на него nbsp, тогда код выглядит хорошо. A0 в шестнадцатеричном формате (160 в десятичном), хотя я думаю, что это может зависеть от шрифта (я не знаю). Если его использовать, то получается так:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Что в моих тестах это выглядит хорошо, но у меня нет предварительного просмотра, когда я публикую ответы (и должно быть !!!) Если он не выходит, это не моя вина, виноват
Посмотрите на примеры, которые Себастьян Пёльстерл приводит в своем учебнике PyGTK 3. Себастьян не размещает метки.
Пример :
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
вы можете увидеть все учебники Себастьяна.
Я не знаю, что вы имеете в виду. Я говорю о том, что здесь, в сообщениях, невозможно использовать HTML-тег «CODE», так что то, что вы помещаете в качестве кода, выходит с хорошим отступом. На странице, на которую вы ссылаетесь, если вы посмотрите на источники страницы, вы увидите, что она не использует CODE, а использует другие разделители HTML.
Это не противоречит введенному вами коду, а скорее указывает на недостаток в системе сообщений на этом сайте. Что, возможно, админы поправят.
Когда я говорю о тегах, я, очевидно, имею в виду HTML, а не Python. В любом случае, если вы поместите код без отступов в Python, он просто не сработает. Если новичок придет и скопирует код, представленный в этом посте, и попытается запустить его, он потерпит неудачу. Вы можете быть разочарованы, так как вы новичок. Опять же, вина не ваша; и в моем предыдущем предыдущем ответе я дал способ решить проблему на уровне пользователей, которые публикуют сообщения.
Вы абсолютно правы, мне стоило загрузить фото, а не копировать код.
чтобы показать, как правильно упорядочены операторы в PyGTK 3.
Для программирования на Python я рекомендую использовать Eclipse с плагином PyDev или Pychar m.
Как упоминалось выше, поэтому мне не нравится Python из-за углублений. Как мы видели, копирование и вставка не работает, чего не происходит с другими языками, такими как C, Java, PHP и т. Д.
Что касается читабельности, мы применяем средство, улучшающее код (например, http://indentcode.net/ ) и готово,
Уродливое исправлено, но если нет отступов и логика изменена, мы звучим ..
Я новичок в PyGTK, возможно ли взаимодействие со сценариями оболочки на этом языке?
Спасибо за руководство.
Привет.