Ми збираємось створити невелику програму з 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
з імпортування gi.repository Gtk класу gui (): def on_open_clicked (self, button): print "\" Відкрито \ "натиснуто кнопку" def on_close_clicked (self, button): print "Закриття програми" 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 ("натиснув", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Закрити') self.button.connect ("натиснув", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__основна__': gui = gui ()
def on_open_clicked (self, button): надрукувати "\" Відкрити \ "клацнула кнопка"
Це функція, яка активується в терміналі, коли ми натискаємо кнопку відкриття. Сигналом для його активації є:
self.button.connect ("натиснув", self.on_open_clicked) def on_close_clicked (self, button): друк "Закриття програми" Gtk.main_quit ()
Це функція, яка активується, коли ми натискаємо на кнопку закриття.
закрити програму, яку ми запускаємо.
сигнал для його активації є
self.button.connect ("натиснув", 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 = 'Закрити') #### кнопка закриття #### self.window.add (self.box) #### поле містить вікно з назвою window #### self.box.pack_start (self.button, True, True, 0) ##### кнопка міститься у вікні з іменем box ### self.window.show_all () ## # ми показуємо все вікно ### gui = gui () ### створити об'єкт gui ####
Ми розміщуємо нашу програму в папці, яка в нашому випадку називається простою на робочому столі
Ми відкриваємо папку з терміналом, у моєму випадку я використовую Nemo з Linux Mint 14.
Для компіляції ми помістили в термінал python gui.py
побачити малюнок.
Тепер ми можемо побачити нашу невелику програму або новий віджет, створений за допомогою бібліотек PyGTK 3
Це просте вікно з двома кнопками.
Тепер ми ділимо програму на три частини, тоді я залишаю код для трьох файлів.
Перший файл gui.py
з gi.repository import Gtk from знищення import імпорт знищення з io import io клас gui (знищити, 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 = 'Закрити') self.button.connect ("натиснув", self.on_close_clicked) self.box.pack_start ( self.button, True, True, 0) self.window.show_all () Gtk.main (), якщо __name__ == '__main__': gui = gui ()
Другий файл io.py
клас io: def on_open_clicked (self, button): print "\" Відкрито \ "натиснуто кнопку"
Третій файл знищення.py
з класу gi.repository імпорту Gtk знищити: def on_close_clicked (self, button): print "Closing application" Gtk.main_quit ()
Ми розміщуємо три файли в одній папці в нашому випадку, папка називається просто розділеною.
Для компіляції трьох файлів. Ми відкриваємо папку з терміналом і просто кладемо її назад у термінал
python gui.py
Зміни, внесені в код gui.py
від знищити імпорт знищити ### оператор, щоб імпортувати наш файл знищити файл.py ### від io import io ### оператор імпортувати наш файл io.py ### клас gui (знищити, io): #### до класу main ми додаємо підкласи знищення та io ####
Ви бачите, що речення
def on_open_clicked (self, button): надрукувати "\" Відкрити \ "клацнула кнопка"
Він знаходиться не в gui.py, а у файлі io.py
Вирок
def on_close_clicked (self, button):
друк "Закриття програми"
Gtk.main_quit ()
він знаходиться у файлі kill.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 thing: '(
Чудово підходить тим з нас, хто використовує Python: D!
Привіт!
Привіт, я вже давно стежу за цією спільнотою, і я не дуже впевнений, що це перший раз, коли я коментував, або вже робив це раніше 😀 (мені не дуже цікаво писати коментарі в Інтернеті). Річ у тім, що я роблю це, щоб залишити пропозицію Елаву та KZKG ^ Гаарі як адміністраторам, і я думаю, що було б непогано додати плагін для розмальовки синтаксису зараз, коли останнім часом я бачу більше повідомлень з кодом на різних мовах програмування. Я знаю, що існує досить багато плагінів, але я не пробував жодного, оскільки я не користувач wordpress, тож залишаю вам подумати про життєздатність запиту. Користуючись нагодою, я запитую решту читачів, що вони думають про цю ідею, бо знаю, що там є люди, які воліють читати код без будь-яких прикрас. Прошу вибачення, якщо це вже було прокоментовано тут, і воно було відхилено з якихось причин, оскільки я не пам’ятаю, щоб бачив будь-яку дискусію на цю тему.
Правда в тому, що я хотів би мати можливість забарвити синтаксис, щоб виділити код мов програмування.
Це допомогло б користувачам, які хочуть вивчити мови програмування.
Але привіт, мені також комфортно форум, і ми можемо обговорювати та вчитися разом.
GNU Emacs є більш зручним, оскільки принаймні вам потрібно вибрати, в якій програмі перевірки мови програмування ви хочете працювати (якщо ви не хочете більше ваги для вашого процесора, використовуйте GNU Nano і насолоджуйтесь мінімалізмом у найкращому вигляді).
Еліо, ми говоримо про WordPress. Реалізовано на блозі Desde Linux. Він не має функції розфарбовувати літери дописів.
Ой вибачте.
Naaa emacs зручний для тих, хто має 84 пальці XD .., звичайних людей, текстових партнерів, субліметексту або блокнота ++ xd
Неправдоподібна річ полягає в тому, що не навчився набирати текст, який необхідний для того, щоб добре обробляти GNU Emacs та його комбінації клавіш. Крім того, його графічний інтерфейс полегшує вам використання його меню (його можна використовувати в Windows, але не рекомендується робити це в звичайному режимі, а в режимі командного рядка, щоб win32 не бойкотував ваш сценарій).
Дуже класний підручник. Але, до речі, вихідний код python не компілюється, це інтерпретована мова.
Його можна скомпілювати в псевдокод. Не машинна мова, а байти представляють щось для інтерпретатора, але процес називається також компільованим. У цьому сенсі можна сказати, що щось складено.
Можливо, краще вивчити pytgk2, оскільки остання версія Windows доступна 2.24. Серія 3 помітна своєю відсутністю. А погані язики говорять, що гном ламає всі верхівки у кожній новій версії.
Я запрограмував макет з GTK 3.4 / 3.6, і правда, вони ламають ваше терпіння і вашу голову, вам доведеться переписати код, тепер я розумію, чому люди Linux Mint скаржаться на GTK і проект GNOME.
З тими, хто є у MINT, я погоджуюсь з GTK 2.4, цього не сталося.
Хороший підручник та посилання.
Лише деталь, оскільки код був введений, у Python відступи є обов’язковими і їх слід дотримуватись у прикладі коду.
Привіт!
Чи можете ви пояснити, з чого складаються обов’язкові ідентифікації в Python? Чесно кажучи, я ніколи цього не чув. Я погано звик до форумів PyGTK 2/3 англійською мовою, і, можливо, я це пропускаю.
У Python ви не використовуєте ключі, як у C, або блоки початку / кінця, як у 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] ==' - ')) {перемикач (argv [ 1] [1]) {випадок 'v': детально = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; за замовчуванням: fprintf (stderr, »Поганий варіант % s \ n », argv [1]); use ();} ++ 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;'
Вітаю 😀
Я думаю, Карлос означає, що там, де виходить код, немає відступів. Це з copy & paste просто не буде працювати. Не знаю, чи існує тег під час створення публікації
щоб ввести мовний код. Було б добре, якщо б вони поставили його, якщо його не існує.
Я вже бачив, у чому проблема: тег 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, чи можливо взаємодіяти зі сценаріями оболонки цією мовою?
Дякую за підручник.
Привіт.