Як почати користуватися Swing GUI-візардом IntelliJ IDEA. Докладна інструкція. Python GUI: створюємо простий додаток з PyQt і Qt Designer

graphical user interface, GUI) - різновид інтерфейсу користувача, в якому елементи інтерфейсу (меню, кнопки, значки, списки і т. п.), представлені користувачеві на дисплеї, виконані у вигляді графічних зображень.

На відміну від інтерфейсу командного рядка, у GUI користувач має довільний доступ (за допомогою пристроїв введення – клавіатури, миші, джойстика тощо) до всіх видимих ​​екранних об'єктів (елементів інтерфейсу) та здійснює безпосереднє маніпулювання ними. Найчастіше елементи інтерфейсу в GUI реалізовані на основі метафор та відображають їх призначення та властивості, що полегшує розуміння та освоєння програм непідготовленими користувачами.

Графічний інтерфейс користувача є частиною інтерфейсу користувача і визначає взаємодію з користувачем на рівні візуалізованої інформації.

Історія

На початку сімдесятих більшість користувачів працювали на комп'ютерах, сидячи за символьними терміналами - управління з системою здійснювалося прямо з командного рядка за допомогою текстового введення.

Власне, на перших комп'ютерах питання про інтерфейс користувача не стояло - працювали на них професіонали цілком могли собі дозволити витратити час на вивчення найскладніших інструкцій по поводженню з підопічною машиною - рано чи пізно це окупалося сторицею. Однак навіть у часи лампових монстрів, коли можливість нашестя численних користувачів-аматорів не передбачалася навіть у найсміливіших прогнозах, дехто вже став замислюватися про те, щоб зробити інтерфейс неприступним на вигляд ЕОМ простіше і зрозуміліше для людини, що сидить за терміналом.

"Лампові монстри"

Експерименти показали, що користувач набагато швидше навчався роботі з новим додатком, використовуючи саме графічний інтерфейс (він же Graphical User Interface, він GUI) замість старанного заучування чергових команд. Вигоди від роботи з GUI були очевидними - зростання продуктивності праці, очевидний комфорт і просто задоволення від роботи.

Крок у теорію - так що ж таке інтерфейс користувача? Відомий російський програміст М. Донський дає цьому поняттю таке визначення: "Сюди входить не тільки, і навіть не стільки картинка на екрані - тривимірна, анімована або просто виконана в модному дизайні - скільки способи взаємодії користувача з системою". Один з головних теоретиків у цій галузі, Тео Мандрел коротко визначив найкращий інтерфейс як такий, який "дозволяє користувачеві зробити те, що він хоче, коли він хоче і як він хоче". Якщо підходити до більшості сучасних програмних засобівз такої позиції, то значну частину їх (якщо не всі) доведеться визнати вкрай незадовільними. Втім, до цього ми ще повернемося, а зараз знову звернемося до історії – як це все починалося?

Теоретичні основи GUI були закладені в 1960-і роки роботами співробітника дослідницького центру SRI Дуга Енгельбарта - в активі цієї людини числяться маніпулятор "миша", керований за допомогою маніпулятора курсор на екрані дисплея і система екранних вікон, відповідальних за додатки, що виконуються комп'ютером. А точкою зростання для ідей Енгельбарта, згодом реалізованих у повноцінний GUI, став Xerox Palo Alto Research Center, Xerox PARC, організований на рубежі 1960-70 років - там експериментували з прототипом графічного інтерфейсу користувача, в якому символьний термінал і командний рядок. растровий екран з іконками та численними вікнами.

У той час корпорація Xerox здобула всесвітню популярність, ставши майже монополістом на ринку копіювальної офісної техніки, і вирішила диверсифікувати свій бізнес, поширивши його в область зароджуваних. комп'ютерних технологій. Примітно, що ніхто тоді точно не знав, що слід робити - Xerox зібрала під одним дахом хипучу талановиту молодь з університетських ліваків, які не бажали з політичних міркувань працювати на уряд, і забезпечила своїм підопічним відносну свободу. Зрозуміло, обстановка студентської вольниці доставила чимало головного болю адміністрації, але при цьому дуже сприяла виникненню величезної кількості передових ідей (як приклад можна назвати створені саме в PARC перший ПК і лазерний принтер). Однією з них була так звана парадигма WIMP (Windows, Icons, Menus, Point-and-click – вікна, піктограми, меню, "вкажи та клацні"), яка і переросла пізніше в GUI.

У 1980 р. GUI з дослідницьких лабораторій вийшов ринку, а роком пізніше Xerox представила оснащену графічним інтерфейсом, система 8010 STAR Information System. Наступні реалізації користувалися популярністю переважно на ринку ПК, і тільки Sun з самого початку стала оснащувати графічним інтерфейсом свої робочі станції. А ось GUI, реалізований Xerox PARC у комп'ютерах Alto та Star ( комерційна версіяпершого) успіху над ринком не отримав.

Власне, з погляду чистої комерції практично всі революційні починання Xerox незмінно зазнавали невдачі. Важко однозначно сказати, чому виходило саме так - серед іншого називається і та причина, що компанія звертала мало уваги на патентний захист своїх розробок, чому нові технології Xerox безоплатно розходилися по світу.

Перший GUI: скріншот Alto

У нашому випадку справді оглушливий комерційний успіх дістався зовсім іншій фірмі - "фруктової компанії" під вивіскою Apple Computers, де на основі ідей Xerox створювалася аналогічна технологія. Не без допомоги співробітників PARC, що перейшли на роботу в Apple, тут до 1984 року вдалося випустити знаменитий Apple Macintosh. Значна частина його популярності припадала на долю дуже вдалого GUI Lisa, реалізованого в MacOS.

GUI Lisa: практично також виглядали перші версії MacOS

Величезна кількість непрофесійних користувачів, які купили собі Macintosh Classic - промовисте тому підтвердження. Але саме Lisa компанії Apple був першим Персональним комп'ютером, оснащеним графічним інтерфейсом користувача.

До речі, через дев'ять років Apple певною мірою вдалося повторити цей успіх, втиснувши повноцінний віконний інтерфейс в принципово новий пристрій - наладонник Newton Message Pad з операційною системою Newton OS 1.0 (1993).

Однак компанія, яка багато в чому випередила свій час, не завжди опинялася в повній мірі скористатися власними досягненнями - у листопаді 1985 року компанія Microsoft випустила першу версію свого графічного інтерфейсу для власної операційної системи MS-DOS – Windows 1.0 (робочий лейбл Interface Manager). Напевно, це була перша операційна система, яку ніхто не замовляв, а Гейтс почав розробляти її на свій страх і ризик. Вікна в ній не перекривалися, а через явну відсутність оптимізації під процесор 8086 не по-дитячому глючило ядро. Основною платформою для Windows 1.0 ставали відомі машини IBM 286 PC/AT. Рівно через два роки, у листопаді 1987-го, на світ з'явилася Windows 2.0, ще через півтора року вийшла версія 2.10. Нічого особливо нового в цих релізах не було, якщо не вважати появу вікон, що перекриваються.

Посібнику Apple вихід Windows 1.0 надзвичайно не сподобався, а Стів Джобспідсумував невдоволення топ-менеджменту наступною фразою: "Графічний інтерфейс - це, звичайно, загальне майбутнє, але якщо попереду лежить так багато всього нового, то чому ж Microsoft просто скопіювала нашу Lisa?!.." У результаті ображена "фруктова" компанія в 1988 році подала до суду позов на Microsoft - за посягання на зовнішній вигляд MacOS. Судовий позов затягнувся на кілька років, поступово сума позову зросла до астрономічних для початку дев'яностих п'яти з лишком мільярдів доларів, що перетворило цю і без того малоперспективну справу на практично безнадійну - безнадійну насамперед через те, що Microsoft, приступаючи до розробки Windows, купила у Apple ліцензію на GUI. Об'єктивно оцінити ступінь "неприпустимості" запозичення елементів інтерфейсу у Apple стало справою вкрай проблематичною, а захований за вікнами GUI вихідний кодбув зовсім різним.

Скріншот Windows 1.0 - робочого столу немає, іконок файлів та ярликів немає.

Зрештою Гейтс погодився підписати угоду про те, що його компанія не використовуватиме інтерфейс Apple для своєї Windows 1.0, але при цьому в документі нічого не говорилося про наступні версії даного продукту. Ця безневинна обставина повною мірою відгукнулася в 1995 році, коли у продажу з'явилася "чикага" - знаменита Windows 95 з дизайном інтерфейсу, більше за інші версії схожим на оригінальний дизайн GUI Apple (правда, при цьому він дещо мімікував в умілих руках співробітників Microsoft). А в серпні 1997 року, після півтора року найсерйозніших комерційних невдач Apple, процвітаюча Microsoft допомогла компанії видертися з фінансової прірви, придбавши 100 тисяч "яблучних" акцій за 150 млн. доларів. Явний політичний крок, після якого тяжба навколо GUI, що неабияк затягнулася, була нарешті припинена. Взагалі історія не терпить умовних способів, але якби Apple раптом вдалося швидко виграти цю справу, чи став світ свідком феноменально-вибухового зростання відкритої архітектури IBM-сумісних ПК у 1990-х роках?

Можливе майбутнє GUI - тривимірні операційні системи

Сучасний середньостатистичний користувач вже не мислить своєї роботи з комп'ютером без численних віконець, кнопочок, стрілочок - того самого "дружнього і зрозумілого інтерфейсу", і лише когорта просунутих професіоналів досі воліє користуватися незмінною командним рядком. У принципі, кому як зручно і які цілі переслідуються - навіть при сучасному розвитку інтерфейсу користувача багато функцій виявляються або недоступними, або незручними при використанні графічного віконного режиму, а сам по собі GUI часто залишає бажати кращого ... Але факт залишається фактом - саме графічний інтерфейс став однією з основних причин просування комп'ютерів у широкі споживчі маси.

Когорта розвинених фахівців воліє користуватися постійним командним рядком.

Класифікація

Можна виділити такі види GUI:

  • простий: типові екранні форми та стандартні елементи інтерфейсу, що забезпечуються самою підсистемою GUI;
  • істинно-графічний, двовимірний: нестандартні елементи інтерфейсу та оригінальні метафори, реалізовані власними засобами програми або сторонньою бібліотекою;
  • тривимірний.

DWIM

Однією з вимог до хорошого графічного інтерфейсу програмної системи є концепція «роби те, що я маю на увазі» або DWIM (Do What I Mean). DWIM вимагає, щоб система працювала передбачувано, щоб користувач наперед інтуїтивно розумів, яку дію виконає програма після отримання його команди.

Переваги

  • Графічний інтерфейс є «дружнім» для користувачів, які почали знайомство з комп'ютером з графічного інтерфейсу.
  • У програмах обробки графіки він часто є єдино можливим

Недоліки

  • Більше споживання пам'яті у порівнянні з текстовим інтерфейсом
  • Складніше організувати віддалену роботу
  • Неможливість автоматизації, якщо вона була закладена автором програми
  • Графічний інтерфейс не є «дружнім» для користувачів, які почали знайомство з комп'ютером з інтерфейсу командного рядка.
  • Графічний інтерфейс складніше у використанні для незрячих людей.

Список популярних графічних інтерфейсів

  1. GNOME
  • Windows
  1. Windows Vista
  2. Windows 7
  3. Windows 10
  • Mac OS X
  1. Leopard

Посилання

  1. Graphical user interface. (2016, December 22). В Wikipedia, The Free Encyclopedia. Retrieved 00:07, December 22, 2016, від https://en.wikipedia.org/w/index.php?title=Graphical_user_interface&oldid=756097302
  2. imtime [Електронний ресурс]: GUI (Graphical User Interface) - так хто ж перший? / Дата звернення: 25.12.16. - Режим доступу:

Головний письменник з питань технологій

Вам хтось послав по електронній поштіфайл GUI, і ви не знаєте, як відкрити його? Можливо, ви знайшли файл GUI на вашому комп'ютері і вас зацікавило, що це файл? Windows може сказати вам, що ви не можете відкрити його, або, у гіршому випадку, ви можете зіткнутися з відповідним повідомленням про помилку, пов'язану з файлом GUI.

До того, як ви зможете відкрити файл GUI, вам необхідно з'ясувати, який вид файлу відноситься розширення файлу GUI.

Tip:Унеправильний GUI файл з'єднання errors може бути прикметою інших підданих іссуов з власним операційним системою Windows. Ці неправильні навантаження можуть також створювати поєднані симптоми так само, як високі Windows startups, комп'ютери freezes, і інші PC performance issues. Там,наскільки висока відповідь на те, що ви скануєте свою Windows Registry для вvalid file asociations й інші питання пов'язані з fragmented Registry.

Відповідь:

Файли GUI мають Файли даних, переважно асоційовані з Doom User Interface Information (Id Software Inc.).

Файли GUI також асоційовані з GUI Design Studio Project File (Caretta Software Ltd.) та FileViewPro.

Інші типи файлів також можуть використовувати розширення GUI. Якщо вам відомі будь-які інші формати файлів, які використовують розширення GUI, будь ласка, зв'яжіться з нами , щоб ми змогли відповідним чином оновити нашу інформацію.

Як відкрити файл GUI:

Найшвидший і найлегший спосіб відкрити свій файл GUI - це двічі клацнути по ньому мишею. В даному випадку система Windowsсама вибере необхідну програмудля відкриття файлу GUI.

У випадку, якщо ваш файл GUI не відкривається, ймовірно, що на вашому ПК не встановлена ​​необхідна прикладна програма для перегляду або редагування файлів з розширеннями GUI.

Якщо ваш ПК відкриває файл GUI, але в неправильній програмі, вам потрібно змінити налаштування асоціації файлів у вашому реєстрі Windows. Іншими словами, Windows асоціює розширення файлів GUI з неправильною програмою.

Встановити необов'язкові продукти – FileViewPro (Solvusoft) | | | |

GUI Інструмент аналізу файлів™

Ви не впевнені, який тип файлу GUI? Бажаєте отримати точну інформацію про файл, його творця і як його можна відкрити?

Тепер можна миттєво отримати всю необхідну інформаціюпро файл GUI!

Революційний GUI Інструмент аналізу файлів™ сканує, аналізує та повідомляє докладну інформацію про файл GUI. Наш алгоритм (очікується видача патенту) швидко проаналізує файл і через кілька секунд надасть докладну інформацію в наочному форматі, що легко читається.†

Вже через кілька секунд ви точно дізнаєтеся тип вашого файлу GUI, додаток, зіставлений з файлом, ім'я файлу користувача, статус захисту файлу та іншу корисну інформацію.

Щоб почати безкоштовний аналіз файлу, просто перетягніть файл GUI всередину пунктирної лініїнижче або натисніть «Переглянути мій комп'ютер» та виберіть файл. Звіт про аналіз файлу GUI буде показаний внизу прямо у вікні браузера.

Перетягніть файл GUI сюди для початку аналізу

Переглянути мій комп'ютер »

Будь ласка, також перевірте мій файл на віруси

Ваш файл аналізується... будь ласка, зачекайте.

Ця стаття призначена для тих, хто тільки починає своє знайомство зі створенням програм з графічним інтерфейсом (GUI) на Python. У ній ми розглянемо основи використання PyQt у зв'язку з Qt Designer. Крок за кроком ми створимо просте Python GUI додаток, який відображатиме вміст обраної директорії.

Що нам потрібно

Нам знадобляться PyQt і Qt Designer, та й Python, само собою.

У цій статті використовується PyQt5 з Python 3, але особливих відмінностей між PyQt і PySide або їх версіями для Python 2 немає.

Linux:Все потрібне, мабуть, є у репозиторіях вашого дистрибутива. Qt Designer можна встановити з Центру Програм, але PyQt доведеться встановлювати через термінал. Встановити все, що нам знадобиться, однією командою можна, наприклад, так:

# для Fedora: $ sudo dnf install python3-qt5 qt-creator # для Debian/Ubuntu: $ sudo apt install python3-qt5 pyqt5-dev-tools qtcreator

Після завершення приготування відкрийте командний рядок/термінал і переконайтеся, що ви можете використовувати команду pyuic5 . Ви повинні побачити таке:

$ pyuic5 Error: one input ui-file must be specified

Якщо ви бачите повідомлення, що такої команди немає або щось таке, спробуйте загуглити вирішення проблеми для вашої операційної системи та версії PyQt.

Якщо ви використовуєте Windows, то, швидше за все, шлях C: Python36 Scripts (змініть 36 на вашу версію Python) не прописаний у вашому PATH . Завітайте у цей тред на Stack Overflow, щоб дізнатися, як вирішити проблему.

Дизайн

Основи

Тепер, коли у нас все готове до роботи, почнемо з простого дизайну.

Відкрийте Qt Designer, де ви побачите діалог нової форми, виберіть Main Windowта натисніть Create.

Після цього у вас має з'явитися форма- шаблон для вікна, розмір якого можна змінювати та куди можна вставляти об'єкти з вікна віджетів тощо. Ознайомтеся з інтерфейсом, він досить простий.

Тепер трохи змінимо розмір нашого головного вікна, т.к. нам не потрібно, щоб воно було таким великим. А ще давайте приберемо автоматично додане меню та рядок стану, оскільки в нашому додатку вони не стануть у нагоді.

Усі елементи форми та їх ієрархія за замовчуванням відображаються у правій частині вікна Qt Designer під назвою Object Inspector. Ви з легкістю можете видаляти об'єкти, натискаючи на них правою кнопкоюмиші у цьому вікні. Або ж ви можете вибрати їх в основній формі та натиснути клавішу DELна клавіатурі.

У результаті маємо майже порожню форму. Єдиний об'єкт, що залишився - centralwidget, але він нам знадобиться, тому з ним ми нічого не робитимемо.

Тепер перетягніть кудись у основну форму List Widget(не List View) та Push Buttonз Widget Box.

Макети

Замість використання фіксованих позицій та розмірів елементів у програмі краще використовувати макети. Фіксовані позиції та розміри у вас будуть виглядати добре (поки ви не зміните розмір вікна), але ви ніколи не можете бути впевнені, що все буде так само на інших машинах та/або операційних системах.

Макетиявляють собою контейнери для віджетів, які утримуватимуть їх на певній позиції щодо інших елементів. Тому при зміні розміру вікна розмір віджетів також змінюватиметься.

Створимо нашу першу форму без використання макетів. Перетягніть список і кнопку у формі та змініть їх розмір, щоб вийшло так:

Тепер у меню Qt Designer натисніть Form, потім виберіть Previewі побачите щось схоже на скріншот вище. Виглядає добре, чи не так? Але ось що станеться, коли ми змінимо розмір вікна:

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

Основне вікно вже підтримує макети, тому нам нічого не потрібно додавати до нашої форми. Просто клацніть правою кнопкою миші по Main Windowв Object Inspectorта виберіть Lay outLay out vertically. Також ви можете клацнути правою кнопкою по порожній області у формі та вибрати ті ж опції:

Ваші елементи повинні бути в тому ж порядку, що й до внесених змін, але якщо це не так, просто перетягніть їх на потрібне місце.

Оскільки ми використовували вертикальне розміщення, всі елементи, які ми додамо, розташовуватимуться вертикально. Можна комбінувати розміщення для отримання бажаного результату. Наприклад, горизонтальне розміщення двох кнопок у вертикальному виглядатиме так:

Якщо ви не можете перемістити елемент у головному вікні, ви можете зробити це у вікні Object Inspector.

Останні штрихи

Тепер завдяки вертикальному розміщенню наші елементи вирівняні правильно. Єдине, що залишилося зробити (але не обов'язково), - змінити ім'я елементів та їхній текст.

У простому додатку на кшталт цього з одним лише списком і кнопкою зміна імен не обов'язково, тому що ним у будь-якому випадку просто користуватися. Проте правильне найменування елементів - те, чого варто звикати від початку.

Властивості елементів можна змінити у розділі Property Editor.

Підказка: Ви можете змінювати розмір, пересувати або додавати елементи, що часто використовуються, в інтерфейс Qt Designer для прискорення робочого процесу. Ви можете додавати приховані/закриті частини інтерфейсу через пункт меню View.

Натисніть кнопку, яку ви додали у форму. Тепер у Property Editorви повинні бачити всі властивості цього елемента. В даний момент нас цікавлять objectName і text у розділі QAbstractButton. Ви можете згортати розділи в Property Editorнатисканням за назвою розділу.

Змініть значення objectName на btnBrowse та text на Виберіть папку.

Повинно вийти так:

Ім'ям об'єкта списку є listWidget, що цілком підходить у цьому випадку.

Збережіть дизайн як design.ui у папці проекту.

Перетворюємо дизайн на код

Звичайно, можна використовувати.ui -файли безпосередньо з Python-коду, проте є й інший шлях, який може здатися легшим. Можна конвертувати код.ui-файлу у Python-файл, який ми потім зможемо імпортувати та використовувати. Для цього ми використовуємо команду pyuic5 з терміналу/командного рядка.

Щоб конвертувати.ui -файл у Python-файл під назвою design.py , використовуйте таку команду:

$ pyuic5 path/to/design.ui -o output/path/to/design.py

Пишемо код

Тепер у нас є файл design.py з потрібною частиною дизайну нашого додатку, і ми починати роботу над створенням його логіки.

Створіть файл main.py у папці, де знаходиться design.py .

Використовуємо дизайн

Для Python GUI програми знадобляться такі модулі:

Import sys # sys необхідний передачі argv в QApplication from PyQt5 import QtWidgets

Також нам потрібен код дизайну, який ми створили раніше, тому його ми також імпортуємо:

Import design # Це наш конвертований файл дизайну

Так як файл з дизайном буде повністю перезаписуватися щоразу при зміні дизайну, ми не змінюватимемо його. Натомість ми створимо новий клас ExampleApp, який об'єднаємо з кодом дизайну для використання всіх його функцій:

Class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Це тут потрібно для доступу до змінних, методів # і т.д. у файлі design.py super().__init__() self.setupUi(self) # Це потрібно для ініціалізації нашого дизайну

У цьому класі ми взаємодіятимемо з елементами інтерфейсу, додаватимемо з'єднання і все інше, що нам потрібно. Але спочатку нам потрібно ініціалізувати клас при запуску коду. З цим ми розберемося на функції main() :

Def main(): app = QtWidgets.QApplication(sys.argv) # Новий екземпляр QApplication window = ExampleApp() # Створюємо об'єкт класу ExampleApp window.show() # Показуємо вікно app.exec_() # і запускаємо програму

І щоб виконати цю функцію, ми скористаємося звичною конструкцією:

If __name__ == "__main__": # Якщо ми запускаємо файл безпосередньо, а не імпортуємо main() # то запускаємо функцію main()

У результаті main.py виглядає так:

Import sys # sys потрібен для передачі argv в QApplication від PyQt5 import QtWidgets import design # Це наш конвертований файл дизайну class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Це тут потрібно для доступу # і т.д. у файлі design.py super().__init__() self.setupUi(self) # Це потрібно для ініціалізації нашого дизайну def main(): app = QtWidgets.QApplication(sys.argv) # Новий екземпляр QApplication window = ExampleApp() # Створюємо об'єкт класу ExampleApp window.show() # Показуємо вікно app.exec_() # і запускаємо програму if __name__ == "__main__": # Якщо ми запускаємо файл безпосередньо, а не імпортуємо main() # то запускаємо функцію main()

Якщо запустити цей код: $ python3 main.py , то наша програма запуститься!

Але натискання на кнопку нічого не дає, тому нам доведеться з цим розібратися.

Додаємо функціональність у наш Python GUI додаток

Примітка Весь подальший код пишеться всередині класу ExampleApp.

Почнемо з кнопки Виберіть папку. Прив'язати до функції подію на зразок натискання на кнопку можна наступним чином:

Self.btnBrowse.clicked.connect(self.browse_folder)

Додайте цей рядок до методу __init__ класу ExampleApp , щоб виконати прив'язку під час запуску програми. А тепер поглянемо на неї ближче:

  • self.btnBrowse: тут btnBrowse – ім'я об'єкта, який ми визначили у Qt Designer. self говорить саме за себе та означає приналежність до поточного класу;
  • clicked – подія, яку ми хочемо прив'язати. У різних елементів різні події, наприклад, у віджетів списку є itemSelectionChanged і т.д.;
  • connect() - метод, який прив'язує подію до виклику переданої функції;
  • self.browse_folder – просто функція (метод), яку ми описали в класі ExampleApp.

Для відкриття діалогу вибору папки ми можемо використовувати вбудований метод QtWidgets.QFileDialog.getExistingDirectory:

Directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Виберіть папку")

Якщо користувач вибере директорію, змінній directory присвоиться абсолютний шлях до обраної директорії, інакше вона дорівнюватиме None . Щоб не виконувати код далі, якщо користувач закриє діалог, ми використовуємо команду if directory: .

Для відображення вмісту директорії нам потрібно імпортувати os:

Import os

І отримати список вмісту наступним чином:

Os.listdir(path)

Для додавання елементів до listWidget ми використовуємо метод addItem() , а для видалення всіх елементів ми маємо self.listWidget.clear() .

У результаті функція browse_folder має виглядати так:

Def browse_folder(self): self.listWidget.clear() # На випадок, якщо в списку вже є елементи directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Виберіть папку") # відкрити діалог вибору директорії та встановити значення змінної # рівного шляху до вибраної директорії if directory: # не продовжувати виконання, якщо користувач не вибрав директорію for file_name in os.listdir(directory): # для кожного файлу в директорії self.listWidget.addItem(file_name) # додати файл до listWidget

Тепер, якщо запустити програму, натиснути на кнопку та вибрати директорію, ми побачимо:

Так виглядає весь код нашого Python GUI додатку:

Import sys # sys потрібен для передачі argv в QApplication import os # Звідси нам знадобляться методи для відображення вмісту директорій від PyQt5 import QtWidgets import design # Це наш конвертований файл дизайну class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWi : # Це тут потрібно для доступу до змінних, методів # і т.д. у файлі design.py super().__init__() self.setupUi(self) # Це потрібно для ініціалізації нашого дизайну self.btnBrowse.clicked.connect(self.browse_folder) # Виконати функцію browse_folder # при натисканні кнопки def browse_fo : self.listWidget.clear() # На випадок, якщо в списку вже є елементи directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Виберіть папку") # відкрити діалог вибору директорії та встановити значення змінної # рівного шляху до обраної директорії if directory : # не продовжувати виконання, якщо користувач не вибрав директорію for file_name in os.listdir(directory): # для кожного файлу в директорії self.listWidget.addItem(file_name) # додати файл до listWidget def main(): app = QtWidgets.QApplication (sys.argv) # Новий екземпляр QApplication window = ExampleApp() # Створюємо об'єкт класу ExampleApp window.show() # Показуємо вікно app.exec_() # і запускаємо програму if __name__ == "__main__": # Якщо ми запускаємо файл безпосередньо , а чи не імпортуємо main() # то запускаємо функцію main()

Це були основи використання Qt Designer та PyQt для розробки Python GUI програми. Тепер ви можете спокійно змінювати дизайн програми та використовувати команду pyuic5 без страху втратити написаний код.

Для початку давайте ознайомимося з самим форматом, з яким ми маємо працювати. Формат Matroska (Матрьошка) спочатку розроблявся як відкритий проект, покликаний послужити альтернативою існуючим пропрієтарним контейнерам. У результаті після кількох років розробки він вийшов на ринок і став швидко завойовувати популярність, особливо в середовищі інтернету. Чим же було викликало таке швидке зростання популярності? Насамперед тим, що творці прислухалися до того, що хочуть бачити користувачі у своїх відеофайлах та реалізували це. Переважна більшість випадків відтворюваного відео файлу потребує підтримки кількох звукових доріжок і субтитрів. У форматі mkvвсе це реалізовано максимально просто та зручно. Ви можете помістити в контейнер скільки завгодно альтернативних аудіо файлів і субтитрів, а також перемикатися між ними за допомогою одного кліка.

Давайте розглянемо в яких випадках може виникнути потреба у застосуванні програми. Наприклад ви завантажили фільм у якому як основна доріжка йде файл з російським перекладом, а інші дороги в тому числі і англійська йдуть окремими файлами. А вам якраз треба оригінальна англійська доріжка, щоб підтягнути своє знання мови. Можна, звичайно, в процесі відтворення підключити і зовнішню дорогу, але у багатьох плеєрів бувають проблеми з цим, деякі взагалі не надають такі можливості, в інших це зробити можна, але досить складно. Як бути у цьому випадку? Тут то нам і знадобиться MKVmerge GUI. Нижче ми розповімо, як швидко і легко додати зовнішні доріжки в контейнер мкв і потім швидко і легко перемикатися між ними в самому плеєрі.

Додавання додаткових звукових доріг у mkv контейнер

Цю процедуру ми будемо проводити на прикладі програми MKVtoolnix 5.9 та мультфільму Secret of Kells. У нас є оригінальний контейнер з двома звуковими доріжками та 4 зовнішні додаткові дороги. Які ми додамо до перших двох, щоб отримати один файл.

Ось так виглядає головне вікно програми.

Для того щоб додати файл з яким ми будемо працювати, необхідно натиснути кнопку "додати" або просто перетягнути його в область позначену як "Вхідні файли". Після чого у нас в ній з'явиться інформація про цей файл.

Як ви бачите на скріншоті у нас у контейнері вже міститься 1 відеофайл у форматі mpeg4, 2 аудіодороги (російські та англійські коментарі), а також 21 файл субтитрів та файл розділів. Крім цього ми хочемо додати в контейнер оригінальну англійську дорогу, ще 2 російські альтернативні переклади та 1 українську. Для цього ми так само натискаємо кнопку додати або перетягуємо файли мишею.

Тепер у нас у вхідних файлах 5 позицій. В принципі це досить щоб завершити формування контейнера. Але можна зробити й невеликі вдосконалення. Як ви бачите на скріншоті нові звукові дороги додалися до кінця списку, крім того у них немає назви і не визначена мова. Це можна виправити, внісши відповідні зміни. По перше звукові доріжкиможна "посунути" вгору у списку, виділивши їх та натиснувши кілька разів кнопку "Вгору". По-друге, ми можемо внести описи для них, ввівши відповідні дані в поле "Ім'я доріжки". Також ми можемо вказати мову доріжки у полі "Мова" і задати доріжку "за замовчуванням" (це та, яка включатиметься автоматично під час запуску відео).

Як ми бачимо тепер англійська доріжка знаходиться під першими двома, вона має назву - Original, мова обрана англійська і стоїть прапор доріжки за умовчанням. Вважатимемо що це все що нам треба було зробити і приступимо до створення файлу. Для цього достатньо натиснути кнопку "почати обробку". До речі для того, щоб наш файл виглядав симпатичніше, ми ще задамо йому інше вихідне ім'я. Ріпери часто вказують у назві файлу масу непотрібної користувачеві інформації, тому ми скоротимо її і залишимо тільки назву та дозвіл. Це можна зробити у пункті "ім'я вихідного файлу".

На цьому скріншоті ви бачите програму в процесі обробки файлу.