Python School
89K subscribers
2.14K photos
5 videos
537 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Создание своего первого графического интерфейса

Библиотека Tkinter предустановлена в Python в качестве стандартного модуля, поэтому нам не нужно устанавливать что-либо для ее использования.

Сначала импортируем Tkinter и создадим окно, в котором мы зададим его название.

mainloop - эта функция вызывает бесконечный цикл окна, поэтому окно будет ждать любого взаимодействия с пользователем, пока не будет закрыто.
Если вы забудете вызвать метод mainloop, для пользователя ничего не отобразится.

Label
Чтобы добавить текст в наш предыдущий пример, мы создадим lbl с помощью класса Label.
Затем мы установим позицию в окне с помощью метода grid. Опять же: если он не будет вызван, текст не будет отображаться!

#tkinter
This media is not supported in your browser
VIEW IN TELEGRAM
Когда накодил бота для убийства спамеров в тележке и продал его за $329 000

Авторы сценария:

Никита Колмогоров - создатель @shieldy_bot

1inch - новый владелец бота
Добавление виджета Button

Начнем с добавления кнопки в окно. Кнопка создается и добавляется в окно так же, как и метка.

Обратите внимание, что мы помещаем кнопку во второй столбец окна, что равно 1. Если вы забудете и поместите кнопку в том же столбце, который равен 0, он покажет только кнопку.

Реакция на нажатие кнопок
Для начала мы запишем функцию clicked(), которую нужно выполнить при нажатии кнопки.

Затем мы передадим аргументу command нашу функцию. Обратите внимание: мы пишем clicked, а не clicked() с круглыми скобками. Потому что мы не вызываем, а передаем функцию.

#tkinter
Научитесь проводить тестирование на проникновение и станьте «атакующим» игроком в кибербезопасности!

На новом курсе «Специалист по тестированию на проникновение» от HackerU вы изучите весь необходимый набор инструментов и навыков для анализа защищенности и пентеста.

Вашими менторами станут практикующие пентестеры, которые уже поработали с Тинькофф Банк, Альфа-Банк, Positive Technologies, IBM, BI. ZONE, Insolar.

После окончания программы вы сможете:
— Проводить пентесты локальных сетей, веб-приложений, мобильных приложений, сетей под архитектурой Windows, операционных систем и др.
— Писать эксплойты для обнаруженных уязвимостей или использовать существующие эксплойты
— Проводить реверс-инжиниринг вредоносного ПО

А также получите диплом о проф.переподготовке, серию карьерных консультаций и возможность получить рабочие проекты уже во время обучения!

Записывайтесь на бесплатный пробный урок и зафиксируйте скидку 40% на обучение: https://is.gd/tylcVE
Настройка размера и шрифта текста

Вы можете задать шрифт текста и его размер. Также можно изменить стиль шрифта. Для этого передайте в аргумент font.

Обратите внимание, что параметр font может быть передан любому виджету. Для того, чтобы поменять его шрифт, он применяется не только к Label, но и к Button.

Изменение цвета текста и фона у Button

Вы можете поменять цвет текста кнопки или любого другого виджета, указывая аргумент fg.
Кроме того, вы можете поменять цвет фона любого виджета, используя свойство bg.

Заметьте, что в данном коде кнопка ничего не делает.

#tkinter
Как из десятков IT-профессий выбрать ту самую, которая подойдет именно мне? А если я гуманитарий? С чего начать? Мне не поздно менять профессию?

Бесплатный профориентационный проект «IT-рентген» от SkillFactory развеет все сомнения и покажет, подходит ли вам сфера IT, а если да — какую профессию лучше выбрать с учетом ваших интересов, знаний и опыта. На пути к новой профессии вам предстоит сделать 4 простых, но важных шага. Готовы?

Начните с прохождения теста — а дальше ваш путь пойдет через профориентационный практикум, прямые эфиры и консультации — и приведет вас к новой IT-профессии мечты! Вы познакомитесь с разными представителями индустрии, узнаете их истории и рекомендации, и получите ответы на вопросы.

❗️Пройти тест "Какой путь в IT - ваш"https://clc.am/kMc1vQ
Библиотека newspaper3k

Часто приходится парсить статьи? Первое, что приходит на ум, — BeautifulSoup, но newspaper3k дает огромное преимущество.

Он даёт возможность извлекать статьи и связанные с ней мета-данные. То есть, ты можешь получить html-код, авторов и текст статьи. И не придется самому распарсивать статью.

Библиотеку необходимо установить:

pip install newspaper3k

#парсинг #parsing
Библиотека Numpy

Надеемся, что вы плодотворно поработали с возможностями Numpy. Но красивый вывод вы явно не получили.

И, правда, выглядит вывод часто очень страшно, а вывести определенное кол-во элементов кажется проблемой. Но есть метод set_printoptions, который нужен для управления выводом.
Метод принимает следующие аргументы:

precision — количество отображаемых цифр после запятой (по умолчанию 8).

threshold — количество элементов в массиве, вызывающее обрезание элементов (по умолчанию 1000).

edgeitems — количество элементов в начале и в конце каждой размерности массива (по умолчанию 3).

linewidth — количество символов в строке, после которых осуществляется перенос (по умолчанию 75).

suppress — если True, не печатает маленькие значения в scientific notation (по умолчанию False).

nanstr — строковое представление NaN (по умолчанию 'nan').

infstr — строковое представление inf (по умолчанию 'inf').

#numpy
В предыдущих примерах GUI Python мы ознакомились со способами добавления простых виджетов, а теперь попробуем получить пользовательский ввод, используя класс Entry (текстовое поле Tkinter).

Вы можете получить текст ввода, используя метод get.

Если вы нажмете на кнопку — появится текст «Привет {name} » вместе с введенным текстом в виджете записи.

Каждый раз, когда мы запускаем код, нам нужно нажать на виджет ввода, чтобы настроить фокус на ввод текста, но как насчет автоматической настройки фокуса?
Здесь все очень просто, ведь все, что нам нужно сделать, — это вызвать метод focus.

Когда вы запустите свой код, вы заметите, что виджет ввода в фокусе, который дает возможность сразу написать текст.

#Tkinter
Добавление виджета Combobox

Чтобы добавить виджет поля с выпадающем списком, используйте класс Combobox.

Как видите с примера, мы добавляем элементы combobox, используя значения кортежа - tuple.

Чтобы установить выбранный элемент, вы можете передать индекс нужного элемента текущих значений.

Чтобы получить выбранный элемент, вы можете использовать метод get

Не забывайте, что вы можете добавлять новые пункты к примеру по нажатию кнопки!

#tkinter
🔖 Хотите освоить C++ с нуля? Получите первые практические навыки 17-18 июня на открытом интенсиве «HTTPS и треды в С++. От простого к прекрасному».

За два дня вы настроите свой http-сервер и разберете его «от и до», произведете все необходимые замеры и сделаете сервер супер быстрым. Занятие станет наглядным примером к тому, чем же все-таки язык С++ лучше других.

После интенсива вас будет ждать еще больше инструментов и практики на онлайн-курсе «C++ Developer. Basic» от OTUS.

🔗 Регистрация на занятие https://otus.pw/LzAl/
Добавление виджетов Radio

Чтобы добавить radio кнопку, используется класс RadioButton

Обратите внимание, что вы должны установить value для каждой radio кнопки с уникальным значением, иначе они не будут работать.

Чтобы получить текущую выбранную radio кнопку или ее значение, вы можете передать параметр переменной и получить его значение.

Каждый раз, когда вы выбираете radio button, значение переменной будет изменено на значение.

#tkinter
Как примножить свой профит не отходя от кода?

Многие, ну прям очень многие прогеры нещадно скипают все новости и success stories, связанные с криптой.

"Слишком мутно, слишком хайпово, слишком время затратно, еще что-то слишком, еще не придумал", - говорили они

"Абсолютно все можно проверить через блокчейн, 0 часов 0 минут в день, доходность ~40%" сказал Waves exchange и запустил программу LP стейкинга

Фреймворк такой:
Регаетесь на сайте -> пополняете СВОЙ кошелек -> уходите кодить -> Получаете прибыль -> Profit!

И да. Если вы думаете что "уже поздно залетать в крипту" - то просто спросите тех, кто так думал в прошлом году :)

{ ...залететь на Waves и потестить }
Библиотека Numpy

Сегодня коснемся важной темы -- срезов. Эта штука просто необходимый инструмент для обработки данных.

Способ очень похож на работу со списками. array[a:b], срезать с элемента a по элемент b. Вот только можно сразу использовать элементы, к примеру простейшие операции. Нельзя только удалять!

Срезы позволяют элегантно получать нужный столбец array[:, a], где a index нужного столбца.

#numpy
Что получится, если соединить навыки разработки и кибербезопасности?

Погрузитесь в мир прикладной безопасности на курсе от HackerU и откройте путь к таким профессиям, как Application Security Expert, Специалист по безопасной разработке

Курс проводят практикующие эксперты, которые уже посотрудничали с Тинькофф Банк, Альфа-Банк, Positive Technologies, IBM и др.

По окончанию курса вы получите:
— Навыки анализа защищенности кода и отдельных программных решений, выявления атак и уязвимостей в окружении продукта
— Навыки построения безопасного жизненного цикла разработки ПО и реализации различных программных механизмов с точки зрения безопасности
— Карьерные консультации с ИБ-экспертами и HR-специалистами
— Возможность найти новую работу ещё в процессе обучения

Познакомиться с экспертами и порешать первые задачки можно уже сейчас — записывайтесь на бесплатный пробный урок в формате CTF-турнира. Всех участников пробного урока ждёт бонус — 30% скидка на курс!

Регистрируйтесь по ссылке: https://is.gd/NZDMya
Библиотека Numpy

С многомерными массивами работать всегда сложнее. Например, если имеется огромный массив и требуется получить 1 индекс каждого вложенного списка начиная с 2, то мы пишем array[1:,2,:]. Однако, если нам надо залезть глубже, то придется добавить двоеточие. Но если нам надо самый последний вложенный, а вложений огромное множество?

Мы уже говорили про Ellipsis, он еще и очень полезен в Numpy. Огромное множество двоеточий можно заменить многоточием. Получается что:
array[1, 2, ...] эквивалентно array[1, 2, :, :, :], но мы сразу видим какая запись более короткая и понятная.

#numpy