Справочник Программиста
6.28K subscribers
1.36K photos
387 videos
64 files
1.71K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
#Задачиpython
Код из видео:

n1 = int(input('Введите число: '))
n2 = 0

while n1 > 0:
digital = n1 % 10
print(digital)
n1 //= 10
print(n1)
n2 *= 10
n2 += digital
print(n2)
#TkinterPaint
Код из видео:

from tkinter import *
import PIL
from PIL import Image, ImageDraw
from tkinter import messagebox
from random import *


def save():
filename = f'image_{randint(0, 10000)}.png'
image1.save(filename)
messagebox.showinfo('Сохранение', 'Сохранено под названием %s' % filename)


def activate_paint(event):
x1, y1 = (event.x - 2), (event.y - 2)
x2, y2 = (event.x + 2), (event.y + 2)
cv.create_line(x1, y1, x2, y2, fill='black', width=5)
draw.line((x1, y1, x2, y2), fill='black', width=5)


root = Tk()
root.title("Рисовалка")
root.resizable(width=False, height=False)

cv = Canvas(root, width=1280, height=720, bg='white')

image1 = PIL.Image.new('RGB', (1280, 720), 'white')
draw = ImageDraw.Draw(image1)

cv.bind('<B1-Motion>', activate_paint)
cv.pack(expand=1, fill=BOTH)

btn_save = Button(text="save", command=save, bg='black', fg='white', font=('Comic Sans MS', 30))
btn_save.pack()

root.mainloop()
#TkinterPlace
Код из видео:

from tkinter import *

root = Tk()
root.title('Тестовое приложение')
root.geometry('500x500')
root.resizable(width=False, height=False)

# root.config(bg = 'black')
root['bg'] = 'black'

label1 = Label(root, text='Привет!', fg='white', bg='brown', padx=20, pady=20)
label1.place(relx=0.5, rely=0.5, anchor=CENTER, relwidth=0.5, relheight=0.5)

root.mainloop()
#TkinterСекундомер
Код из видео:

from tkinter import *
from datetime import datetime

temp = 0
after_id = ''


def tick():
global temp, after_id
after_id = root.after(1000, tick)
f_temp = datetime.fromtimestamp(temp).strftime("%M:%S")
label1.configure(text=str(f_temp))
temp += 1


def start_tick():
btnStart.pack_forget()
btnStop.pack()
tick()


def stop_tick():
btnStop.pack_forget()
btnContinue.pack()
btnReset.pack()
root.after_cancel(after_id)


def continue_tick():
btnContinue.pack_forget()
btnReset.pack_forget()
btnStop.pack()
tick()


def reset_tick():
global temp
temp = 0
label1.configure(text='00:00')
btnContinue.pack_forget()
btnReset.pack_forget()
btnStart.pack()


root = Tk()
root.title('Секундомер')
root.resizable(width=False, height=False)
root.geometry('300x200')

label1 = Label(root, width=10, font=('Comic Sans MS', 30), text='00:00')
label1.pack()

btnStart = Button(root, text='Старт', font=('Comic Sans MS', 20), width=15, command=start_tick)
btnStop = Button(root, text='Стоп', font=('Comic Sans MS', 20), width=15, command=stop_tick)
btnContinue = Button(root, text='Продолжить', font=('Comic Sans MS', 20), width=15, command=continue_tick)
btnReset = Button(root, text='Сброс', font=('Comic Sans MS', 20), width=15, command=reset_tick)
btnStart.pack()



root.mainloop()
👍2
#TkinterКликер
Код из видео:

from tkinter import *
from tkinter import messagebox
from random import *

clicks = 0


def randomize():
global clicks
btnClick.place(x=randint(70, 1000), y=randint(70, 650))
clicks += 1
labelClick['text'] = str(clicks)
labelClick.pack()


root = Tk()
root.title('Кликер')
root.geometry('1280x720')
root.resizable(width=False, height=False)
root['bg'] = 'black'

labelClick = Label(root, text='0', font=('Comic Sans MS', 30, 'bold'), bg='black', fg='white')
labelClick.pack()

btnClick = Button(root,
text='Click',
bg='lime',
fg='black',
padx='20',
pady='8',
font=('Comic Sans MS', 13, 'bold'),
command=randomize
)
btnClick.place(x=randint(70, 1000), y=randint(70, 650))

root.mainloop()
#TkinterFrame
Код из видео:

frame_top = Frame(root) # root можно не указывать
frame_top.pack(side=LEFT)
label_1 = Label(frame_top, width=7, height=4, bg='yellow', text="1")
label_1.pack(side=LEFT)
label_2 = Label(frame_top, width=7, height=4, bg='orange', text="2")
label_2.pack(side=LEFT)

frame_bottom = Frame(root)
frame_bottom.pack(side=LEFT)
label_3 = Label(frame_bottom, width=7, height=4, bg='lightgreen', text="3")
label_3.pack(side=LEFT)
label_4 = Label(frame_bottom, width=7, height=4, bg='lightblue', text="4")
label_4.pack(side=LEFT)

Кроме Frame существует похожий класс LabelFrame – фрейм с подписью.
В отличие от простого фрейма у него есть свойство text:

frame_top = LabelFrame(text="Верх")
frame_top.pack()
label_1 = Label(frame_top, width=7, height=4, bg='yellow', text="1")
label_1.pack(side=LEFT)
label_2 = Label(frame_top, width=7, height=4, bg='orange', text="2")
label_2.pack(side=LEFT)

frame_bottom = LabelFrame(text="Низ")
frame_bottom.pack()
label_3 = Label(frame_bottom, width=7, height=4, bg='lightgreen', text="3")
label_3.pack(side=LEFT)
label_4 = Label(frame_bottom, width=7, height=4, bg='lightblue', text="4")
label_4.pack(side=LEFT)

Горизонтальное расположение

frame_top.pack(side=LEFT)
frame_bottom.pack(side=LEFT)
создал свой блокнот)
В нём есть светлая и тёмная тема, так же возможность изменить шрифт
👍3
#Задачиpython
Код из видео:

print('A(x1; y1):')
x1 = float(input('x1 = '))
y1 = float(input('y1 = '))

print('B(x1; y1):')
x2 = float(input('x2 = '))
y2 = float(input('y2 = '))

print('Уравнение:')

k = (y1 - y2) / (x1 - x2)
b = y2 - k * x2
print('\ty = %.2f*x + %.2f' % (k, b))
notepad.ico
264.1 KB
#TkinterБлокнот
Код из видео:

from tkinter import *

root = Tk()
root.title('Текстовый редактор')
root.geometry('600x700')
root.iconbitmap('notepad.ico')


f_text = Frame(root)
f_text.pack(fill=BOTH, expand=1)

text_fild = Text(f_text,
bg='black',
fg='lime',
padx=10,
pady=10,
wrap=WORD,
insertbackground='brown',
selectbackground='#8D917A',
spacing3=10,
width=30
)
text_fild.pack(expand=1, fill=BOTH, side=LEFT)

scroll = Scrollbar(f_text, command=text_fild.yview)
scroll.pack(side=LEFT, fill=Y)
text_fild.config(yscrollcommand=scroll.set)

root.mainloop()
#TkinterБлокнот
Код из видео:

from tkinter import *

root = Tk()
root.title('Текстовый редактор')
root.geometry('600x700')
root.iconbitmap('notepad.ico')

main_menu = Menu(root)

# Файл
file_menu = Menu(main_menu, tearoff=0)
file_menu.add_command(label='Открыть')
file_menu.add_command(label='Сохранить')
file_menu.add_separator() # Полоска в менюшке
file_menu.add_command(label='Закрыть')
root.config(menu=file_menu)

# Вид
view_menu = Menu(main_menu, tearoff=0)
view_menu_sub = Menu(view_menu, tearoff=0)
font_menu_sub = Menu(view_menu, tearoff=0)
view_menu_sub.add_command(label='Тёмная')
view_menu_sub.add_command(label='Светлая')
view_menu.add_cascade(label='Тема', menu=view_menu_sub)

font_menu_sub.add_command(label='Arial')
font_menu_sub.add_command(label='Comic Sans MS')
font_menu_sub.add_command(label='Times New Roman')
view_menu.add_cascade(label='Шрифт...', menu=font_menu_sub)
root.config(menu=view_menu)

# Добавление списков меню
main_menu.add_cascade(label='Файл', menu=file_menu)
main_menu.add_cascade(label='Вид', menu=view_menu)
root.config(menu=main_menu)

f_text = Frame(root)
f_text.pack(fill=BOTH, expand=1)

text_fild = Text(f_text,
bg='black',
fg='lime',
padx=10,
pady=10,
wrap=WORD,
insertbackground='brown',
selectbackground='#8D917A',
spacing3=10,
width=30
)
text_fild.pack(expand=1, fill=BOTH, side=LEFT)

scroll = Scrollbar(f_text, command=text_fild.yview)
scroll.pack(side=LEFT, fill=Y)
text_fild.config(yscrollcommand=scroll.set)

root.mainloop()
#TkinterБлокнот
Код из видео:

from tkinter import *
from tkinter import messagebox
from tkinter import filedialog


def chenge_theme(theme):
text_fild['bg'] = view_colors[theme]['text_bg']
text_fild['fg'] = view_colors[theme]['text_fg']
text_fild['insertbackground'] = view_colors[theme]['cursor']
text_fild['selectbackground'] = view_colors[theme]['select_bg']


def chenge_fonts(fontss):
text_fild['font'] = fonts[fontss]['font']


def notepad_exit():
answer = messagebox.askokcancel('Выход', 'Вы точно хотите выйти?')
if answer:
root.destroy()


def open_file():
file_path = filedialog.askopenfilename(title='Выбор файла', filetypes=(('Текстовые документы (*.txt)', '*.txt'), ('Все файлы', '*.*')))
if file_path:
text_fild.delete('1.0', END)
text_fild.insert('1.0', open(file_path, encoding='utf-8').read())


def save_file():
file_path = filedialog.asksaveasfilename(filetypes=(('Текстовые документы (*.txt)', '*.txt'), ('Все файлы', '*.*')))
f = open(file_path, 'w', encoding='utf-8')
text = text_fild.get('1.0', END)
f.write(text)
f.close()


root = Tk()
root.title('Текстовый редактор')
root.geometry('600x700')
root.iconbitmap('notepad.ico')

main_menu = Menu(root)

# Файл
file_menu = Menu(main_menu, tearoff=0)
file_menu.add_command(label='Открыть', command=open_file)
file_menu.add_command(label='Сохранить', command=save_file)
file_menu.add_separator()
file_menu.add_command(label='Закрыть', command=notepad_exit)
root.config(menu=file_menu)

# Вид
view_menu = Menu(main_menu, tearoff=0)
view_menu_sub = Menu(view_menu, tearoff=0)
font_menu_sub = Menu(view_menu, tearoff=0)
view_menu_sub.add_command(label='Тёмная', command=lambda: chenge_theme('dark'))
view_menu_sub.add_command(label='Светлая', command=lambda: chenge_theme('light'))
view_menu.add_cascade(label='Тема', menu=view_menu_sub)

font_menu_sub.add_command(label='Arial', command=lambda: chenge_fonts('Arial'))
font_menu_sub.add_command(label='Comic Sans MS', command=lambda: chenge_fonts('CSMS'))
font_menu_sub.add_command(label='Times New Roman', command=lambda: chenge_fonts('TNR'))
view_menu.add_cascade(label='Шрифт...', menu=font_menu_sub)
root.config(menu=view_menu)

# Добавление списков меню
main_menu.add_cascade(label='Файл', menu=file_menu)
main_menu.add_cascade(label='Вид', menu=view_menu)
root.config(menu=main_menu)

f_text = Frame(root)
f_text.pack(fill=BOTH, expand=1)

view_colors = {
'dark': {
'text_bg': 'black', 'text_fg': 'lime', 'cursor': 'brown', 'select_bg': '#8D917A'
},
'light': {
'text_bg': 'white', 'text_fg': 'black', 'cursor': '#A5A5A5', 'select_bg': '#FAEEDD'
}
}

fonts = {
'Arial': {
'font':'Arial 14 bold'
},
'CSMS': {
'font': ('Comic Sans MS', 14, 'bold')
},
'TNR': {
'font': ('Times New Roman', 14, 'bold')
}
}

text_fild = Text(f_text,
bg='black',
fg='lime',
padx=10,
pady=10,
wrap=WORD,
insertbackground='brown',
selectbackground='#8D917A',
spacing3=10,
width=30,
font='Arial 14 bold'
)
text_fild.pack(expand=1, fill=BOTH, side=LEFT)

scroll = Scrollbar(f_text, command=text_fild.yview)
scroll.pack(side=LEFT, fill=Y)
text_fild.config(yscrollcommand=scroll.set)

root.mainloop()
❤‍🔥4