PyGTK 3: міні-підручник з графічним інтерфейсом з Python + GTK + 3

Ми збираємось створити невелику програму з PyGTK 3.0, яка також працює для PyGTK 3.4. Цей маленький графічний інтерфейс навчить вас розділити програму на два або більше файлів.

Ви можете відвідати підручник Себастіана Пельстерля з нового PyGTK 3, ось новий підручник, я залишаю посилання:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

Це блог Себастьяна.

http://k-d-w.org/node/88

Одна з критик цього підручника Себастьяна полягає в тому, що він не вчить розділяти програму на частини або на кілька файлів, було б добре, якби він показав приклад того, як це зробити за допомогою 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.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Гнилі87 - сказав він

    У kde я волію використовувати kdevelop (я думаю, що це так називається), щоб створити графічний інтерфейс спокійно, але мені все ще важко знайти процеси, щоб це сталося x thing: '(

  2.   st0rmt4il - сказав він

    Чудово підходить тим з нас, хто використовує Python: D!

    Привіт!

  3.   Пабло - сказав він

    Привіт, я вже давно стежу за цією спільнотою, і я не дуже впевнений, що це перший раз, коли я коментував, або вже робив це раніше 😀 (мені не дуже цікаво писати коментарі в Інтернеті). Річ у тім, що я роблю це, щоб залишити пропозицію Елаву та KZKG ^ Гаарі як адміністраторам, і я думаю, що було б непогано додати плагін для розмальовки синтаксису зараз, коли останнім часом я бачу більше повідомлень з кодом на різних мовах програмування. Я знаю, що існує досить багато плагінів, але я не пробував жодного, оскільки я не користувач wordpress, тож залишаю вам подумати про життєздатність запиту. Користуючись нагодою, я запитую решту читачів, що вони думають про цю ідею, бо знаю, що там є люди, які воліють читати код без будь-яких прикрас. Прошу вибачення, якщо це вже було прокоментовано тут, і воно було відхилено з якихось причин, оскільки я не пам’ятаю, щоб бачив будь-яку дискусію на цю тему.

    1.    маріаногаудікс - сказав він

      Правда в тому, що я хотів би мати можливість забарвити синтаксис, щоб виділити код мов програмування.
      Це допомогло б користувачам, які хочуть вивчити мови програмування.

      Але привіт, мені також комфортно форум, і ми можемо обговорювати та вчитися разом.

      1.    eliotime3000 - сказав він

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

        1.    маріаногаудікс - сказав він

          Еліо, ми говоримо про WordPress. Реалізовано на блозі Desde Linux. Він не має функції розфарбовувати літери дописів.

          1.    eliotime3000 - сказав він

            Ой вибачте.

        2.    pandev92 - сказав він

          Naaa emacs зручний для тих, хто має 84 пальці XD .., звичайних людей, текстових партнерів, субліметексту або блокнота ++ xd

          1.    eliotime3000 - сказав він

            Неправдоподібна річ полягає в тому, що не навчився набирати текст, який необхідний для того, щоб добре обробляти GNU Emacs та його комбінації клавіш. Крім того, його графічний інтерфейс полегшує вам використання його меню (його можна використовувати в Windows, але не рекомендується робити це в звичайному режимі, а в режимі командного рядка, щоб win32 не бойкотував ваш сценарій).

  4.   Карпер - сказав він

    Дуже класний підручник. Але, до речі, вихідний код python не компілюється, це інтерпретована мова.

    1.    Гіскард - сказав він

      Його можна скомпілювати в псевдокод. Не машинна мова, а байти представляють щось для інтерпретатора, але процес називається також компільованим. У цьому сенсі можна сказати, що щось складено.

  5.   hty - сказав він

    Можливо, краще вивчити pytgk2, оскільки остання версія Windows доступна 2.24. Серія 3 помітна своєю відсутністю. А погані язики говорять, що гном ламає всі верхівки у кожній новій версії.

    1.    маріаногаудікс - сказав він

      Я запрограмував макет з GTK 3.4 / 3.6, і правда, вони ламають ваше терпіння і вашу голову, вам доведеться переписати код, тепер я розумію, чому люди Linux Mint скаржаться на GTK і проект GNOME.
      З тими, хто є у MINT, я погоджуюсь з GTK 2.4, цього не сталося.

  6.   Карлос - сказав він

    Хороший підручник та посилання.
    Лише деталь, оскільки код був введений, у Python відступи є обов’язковими і їх слід дотримуватись у прикладі коду.

    Привіт!

    1.    маріаногаудікс - сказав він

      Чи можете ви пояснити, з чого складаються обов’язкові ідентифікації в Python? Чесно кажучи, я ніколи цього не чув. Я погано звик до форумів PyGTK 2/3 англійською мовою, і, можливо, я це пропускаю.

      1.    Гіскард - сказав він

        У Python ви не використовуєте ключі, як у C, або блоки початку / кінця, як у Pascal, але все розуміється через відступ, який ви надаєте коду. Тобто блоки розпізнаються як відступи. Це особливість, яка мені особливо подобається. Ви уникаєте писати ключі та подібні речі.

        1.    pandev92 - сказав він

          Мені це просто не подобається, здається простіше поставити дві маленькі клавіші або std :: endl;, ніж бачити, якщо рядок xd добре прокладений

          1.    Феліпе - сказав він

            : p Ваш учитель програмування поставить вам 0. Або ще гірше, вони звільнять вас з роботи. Найголовніше, що код читабельний з усім, що передбачає

          2.    pandev92 - сказав він

            закінчуючи фіксацією фігурних дужок, це робить мене набагато читабельнішим XD ..

          3.    Гіскард - сказав він

            Серйозно ???


            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);}

            Розумієш? Без відступів це не дуже добре розуміється. І це легко. З більш складним його розуміє лише компілятор. Річ у тім, що, оскільки ти все одно МОЖЕШ зробити відступ (щоб люди зрозуміли код), чому він був би зайвим і використовував роздільники? Досить з відступами і все.

          4.    pandev92 - сказав він

            Звичайно, нічого не зрозуміло, оскільки ви не поважаєте правил належного написання програми на c / c ++. Те, що ви зробили, є дійсним для будь-чого, наприклад, для вкладання функції у функцію всередині іншої функції, яка знаходиться всередині іншої, тоді я хочу побачити вас xd, якщо ви зможете це зрозуміти.

          5.    pandev92 - сказав він

            до речі, з двох поглядів, цей код легко зрозумілий xD

          6.    Гіскард - сказав він

            Те, що я зробив, я навмисно показав вам, що без відступу, навіть якщо він компілюється, надзвичайно важко зрозуміти будь-який код. Отже, у вас є 2 правила: Відступити і охопити роздільниками. Але це зайве. У Python такий код просто не приймається інтерпретатором. І у вас лише одне правило: відступ. Легко.
            Але ей, кожен зі своїми смаками.

          7.    Афій - сказав він

            Обидва вони хороші, з відступами та без відступів, на мою думку, я віддаю перевагу стилю з комою або рубіном, подібним до 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;'

            Вітаю 😀

      2.    Гіскард - сказав він

        Я думаю, Карлос означає, що там, де виходить код, немає відступів. Це з copy & paste просто не буде працювати. Не знаю, чи існує тег під час створення публікації щоб ввести мовний код. Було б добре, якщо б вони поставили його, якщо його не існує.

        1.    Гіскард - сказав він

          Я вже бачив, у чому проблема: тег CODE видаляє всі пробіли та вкладки (цього робити не повинен !!!). Але якщо ви накладете на нього nbsp, тоді код виглядає добре. A0 у шістнадцятковій формі (160 у грудні), хоча я думаю, що це може залежати від шрифту (я не знаю). Якщо він використовується, то виходить так:

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          Те, що в моїх тестах це виглядає добре, але у мене немає попереднього перегляду, коли я публікую відповіді (а це повинно бути !!!). Якщо це не виходить, це не моя вина

          1.    маріаногаудікс - сказав він

            Подивіться на приклади, які Себастьян Пельстерл наводить у своєму підручнику з PyGTK 3, Себастьян не розміщує ярлики.

            Приклад:

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

            ви можете побачити весь підручник Себастьяна.

          2.    Гіскард - сказав він

            Я не знаю, що ви маєте на увазі. Я хочу сказати, що тут, у публікаціях, неможливо використовувати HTML-тег «CODE», щоб те, що ви ввели як код, і вийшло добре з відступами. На сторінці, яку ви посилаєтесь, якщо ви побачите джерела сторінок, ви побачите, що вона не використовує CODE, а використовує інші HTML-роздільники.
            Це не проти коду, який ви вводите, а навпаки, вказує на недолік у системі розміщення цього сайту. Що, можливо, можуть виправити адміністратори.
            Коли я говорю про теги, я, очевидно, маю на увазі HTML, а не Python. У будь-якому випадку, якщо ви вставите код без відступу в Python, це просто не буде працювати. Якщо новачок прийде і скопіює код, як він з’являється в цій публікації, і спробує його запустити, він не вдасться. Ви можете бути розчаровані, оскільки ви новачок. Знову ж, вина не ваша; і в моїй безпосередній попередній відповіді те, що я зробив, було давати спосіб вирішити проблему на рівні користувача-хто-що.

          3.    маріаногаудікс - сказав він

            Ви абсолютно праві, я повинен був завантажувати фотографії, а не копіювати код.
            щоб показати, як в PyGTK 3 правильно впорядковуються оператори.

  7.   Феліпе - сказав він

    Для програмування на python я рекомендую використовувати Eclipse з плагіном PyDev або Pychar m

  8.   Луїкс - сказав він

    Як вже згадувалося вище, саме тому я не люблю python через відступи. Як ми вже бачили, копіювання та вставлення не буде працювати, що не відбувається з іншими мовами, такими як C, Java, PHP тощо.

    Що стосується читабельності, ми застосовуємо засоби покращення коду (наприклад http://indentcode.net/ ) і готовий,

    Некрасива річ виправлена, але якщо немає відступу і логіка змінена, ми звучимо ...

  9.   Карлос - сказав він

    Я новачок у PyGTK, чи можливо взаємодіяти зі сценаріями оболонки цією мовою?

    1.    Привіт - сказав він

      Дякую за підручник.

      Привіт.