Рано или поздно я наконец начну придерживаться графика, как и раньше. По крайней мере я на это надеюсь))
⚡6👍3🔥1
GUI Переводчик на Python tkinter v2
Код из видео:
from tkinter import *
from tkinter import ttk
from googletrans import Translator
def translate():
for language, suffix in languages.items():
if comboTwo.get() == language:
text = t_input.get('1.0', END)
translation = translator.translate(text, dest=suffix)
t_output.delete('1.0', END)
t_output.insert('1.0', translation.text)
root = Tk()
root.geometry('500x350')
root.title('Переводчик')
root.resizable(width=False, height=False)
root['bg'] = 'black'
translator = Translator()
languages = {'Русский': 'ru', 'Английский': 'en', 'Французский': 'fr'}
header_frame = Frame(root, bg='black')
header_frame.pack(fill=X)
header_frame.grid_columnconfigure(0, weight=1)
header_frame.grid_columnconfigure(1, weight=1)
header_frame.grid_columnconfigure(2, weight=1)
comboOne = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboOne.current(0)
comboOne.grid(row=0, column=0)
label = Label(header_frame, fg='white', bg='black', font='Arial 17 bold', text='->')
label.grid(row=0, column=1)
comboTwo = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboTwo.current(1)
comboTwo.grid(row=0, column=2)
t_input = Text(root, width=35, height=5, font='Arial 12 bold')
t_input.pack(pady=20)
btn = Button(root, width=45, text='Перевести', command=translate)
btn.pack()
t_output = Text(root, width=35, height=5, font='Arial 12 bold')
t_output.pack(pady=20)
root.mainloop()
Код из видео:
from tkinter import *
from tkinter import ttk
from googletrans import Translator
def translate():
for language, suffix in languages.items():
if comboTwo.get() == language:
text = t_input.get('1.0', END)
translation = translator.translate(text, dest=suffix)
t_output.delete('1.0', END)
t_output.insert('1.0', translation.text)
root = Tk()
root.geometry('500x350')
root.title('Переводчик')
root.resizable(width=False, height=False)
root['bg'] = 'black'
translator = Translator()
languages = {'Русский': 'ru', 'Английский': 'en', 'Французский': 'fr'}
header_frame = Frame(root, bg='black')
header_frame.pack(fill=X)
header_frame.grid_columnconfigure(0, weight=1)
header_frame.grid_columnconfigure(1, weight=1)
header_frame.grid_columnconfigure(2, weight=1)
comboOne = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboOne.current(0)
comboOne.grid(row=0, column=0)
label = Label(header_frame, fg='white', bg='black', font='Arial 17 bold', text='->')
label.grid(row=0, column=1)
comboTwo = ttk.Combobox(header_frame,
values=[lang for lang in languages], state='readonly')
comboTwo.current(1)
comboTwo.grid(row=0, column=2)
t_input = Text(root, width=35, height=5, font='Arial 12 bold')
t_input.pack(pady=20)
btn = Button(root, width=45, text='Перевести', command=translate)
btn.pack()
t_output = Text(root, width=35, height=5, font='Arial 12 bold')
t_output.pack(pady=20)
root.mainloop()
👍25❤3🔥1
Ну всё, завтра ожидайте видос в 16:30 по МСК!
Надеюсь следующий выйдет точно не через месяц))
Надеюсь следующий выйдет точно не через месяц))
👍7🎉6🔥3
всё время проскакивают мысли как было классно, когда снимал их каждый день. Я бы и сейчас с радостью этим занимался, да времени не хватает :(
А ещё написал новую статейку для новичков ;)
https://it-start.online/articles/zapolnenie-spiska-randomnymi-znachenijami-v-python
https://it-start.online/articles/zapolnenie-spiska-randomnymi-znachenijami-v-python
IT Start
Заполнение списка рандомными значениями в Python - IT Start
Заполнение списка рандомными значениями в Python. Научимся заполнять список рандомными значениями в python. Используем модули random и numpy.
⚡5👍2🔥1
короче, чтоб канал не простаивал без дела, я решил попробовать его хоть как-то вести)
Буду выкладывать статьи почаще, а может ещё что-нибудь, пока не знаю))
С видосами сложнее, надо попытаться выйти хотя бы на 1 видео в неделю
Буду выкладывать статьи почаще, а может ещё что-нибудь, пока не знаю))
С видосами сложнее, надо попытаться выйти хотя бы на 1 видео в неделю
👍8❤1🔥1
Решил ввести что-то типа новой рубрики на канале, где буду выкладывать полезные лайфхаки/приёмы.
Подсчёт всех повторяющихся элементов списка с помощью встроенного модуля Python:
Подсчёт всех повторяющихся элементов списка с помощью встроенного модуля Python:
from collections import Counter
test_list = [1, 5, 4, 1, 2, 8, 5, 2, 11, 3, 6, 1, 11, 15, 5]
counting = Counter(test_list)
print(counting)
# Вывод: Counter({1: 3, 5: 3, 2: 2, 11: 2, 4: 1, 8: 1, 3: 1, 6: 1, 15: 1})
👍13❤1🔥1
Справочник Программиста
https://www.youtube.com/watch?v=u6uAouBcHqs
Код из видео:
from PIL import Image
import glob
types = ("*.png", "*.jpg")
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(files))
print(f'Найдено файлов: {len(files_grabbed)}')
for i in files_grabbed:
img = Image.open(i)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(f'output/{i}')
from PIL import Image
import glob
types = ("*.png", "*.jpg")
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(files))
print(f'Найдено файлов: {len(files_grabbed)}')
for i in files_grabbed:
img = Image.open(i)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(f'output/{i}')
👍8⚡3❤🔥2🐳1
В модуле difflib есть метод get_close_matches, который поможет найти наиболее подходящие совпадения к введённой строке.
Первый аргумент этого метода задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск, в третьем, и не обязательном аргументе n можно задать максимальное число возвращаемых совпадений. Ещё этот метод поддерживает необязательный именованный аргумент cutoff (по умолчанию он установлен в значение 0.6), который позволяет задавать пороговое значение для оценки совпадений.
Пример кода:
Первый аргумент этого метода задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск, в третьем, и не обязательном аргументе n можно задать максимальное число возвращаемых совпадений. Ещё этот метод поддерживает необязательный именованный аргумент cutoff (по умолчанию он установлен в значение 0.6), который позволяет задавать пороговое значение для оценки совпадений.
Пример кода:
import difflib
print(difflib.get_close_matches('python', ['pyhton', 'apple', 'path', 'sea', 'pear'], n=2))
# Вывод ['pyhton', 'path']
👍5❤1🏆1
Получение уникальных элементов из списка методом set()
С помощью метода set() преобразуем список в множество, получим уникальные значения, и сделаем из множества список.
Пример:
С помощью метода set() преобразуем список в множество, получим уникальные значения, и сделаем из множества список.
Пример:
from random import randint
numbers = [randint(1, 5) for i in range(1, 15)]
print(f'Начальный список: {numbers}')
unique_numbers = list(set(numbers))
print(f'Список уникальных значений: {unique_numbers}')
# Вывод:
# Начальный список: [3, 2, 1, 3, 3, 3, 2, 2, 3, 1, 1, 2, 5, 5]
# Список уникальных значений: [1, 2, 3, 5]
⚡4👍2🏆1🤨1
Справочник Программиста
https://www.youtube.com/watch?v=nIBDaDUvLjo
Код из видео:
import time
from tkinter import *
import pygame
def stop():
btn_start.pack()
btn_stop.pack_forget()
pygame.mixer.music.pause()
def sound():
btn_start.pack_forget()
btn_stop.pack()
pygame.mixer.music.play()
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
sound()
file = '1.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(0, 0)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()
btn_stop = Button(root, text='Выключить', font='Arial 15 bold', command=stop)
root.mainloop()
import time
from tkinter import *
import pygame
def stop():
btn_start.pack()
btn_stop.pack_forget()
pygame.mixer.music.pause()
def sound():
btn_start.pack_forget()
btn_stop.pack()
pygame.mixer.music.play()
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
sound()
file = '1.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(0, 0)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()
btn_stop = Button(root, text='Выключить', font='Arial 15 bold', command=stop)
root.mainloop()
👍7⚡4🏆2