Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 14, 2022 17:16:55

Graf541
Зарегистрирован: 2022-12-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с заданием!

Помогите пожалуйста с заданием, в пайтон имею онли base. С классами еще особо работать не могу, прошу конкретно подсказать по п.6, как это сделать в tkinter. И хотелось бы еще услышать комментарии, как можно написать сие творение покомпактнее, заранее благодарю за помощь:

Задание:
Напишите программу на языке программирования Python, в которой должны быть предусмотрены следующие возможности:
1. Надпись в заголовке главного окна меняется по щелчку мыши с вашей фамилии на ваш ID и обратно.
2. При загрузке программы на главном окне отрисовывается система координат, с обозначениями осей х и у, полученными из вашего ID.
3. При загрузке программы на главном окне отрисовывается треугольник, координаты х которого это последние шесть цифр вашего ID, составляющих три двузначных числа, а координаты у – последние шесть цифр вашего ID деленного на 3, составляющих три двузначных числа. Фигура треугольника должна быть закрашена сплошной заливкой.
4. Координаты треугольника можно изменить в главном окне с помощью ввода чисел в текстовые поля. При изменении координат треугольник должен быть перерисован.
5. Цвет треугольника меняется в зависимости от выбранного виджета. Виджеты для выбора цвета сгруппированы во фрейме. Минимальное количество цветов, доступных для выбора – 6, максимальное – 16. Фигура треугольника должна быть закрашена сплошной заливкой такого же цвета.
6. При изменении пользователем размера окна виджеты смещаются относительного нового размера окна.


Творение:
import tkinter
from tkinter import LAST

window = tkinter.Tk()

width = 1920
height = 1080

window.config(bg='snow1')

window.geometry(f'{width}x{height}')
window.title('345')


def b1(event):
global count
if count % 2 == 0:
window.title('123')
else:
window.title('345')
count += 1


count = 0
window.bind('<Button-1>', b1)


# Begin1
def creat_triangle(color='black'):
global width
global height
global canv

canv_witdh = width // 2
canv_height = height // 2

canv = tkinter.Canvas(window, bg='snow', width=width, height=height, cursor='pencil')

posion = (20, canv_height - 40, 20, 40)
posion_1 = (20, canv_height - 40, canv_witdh - 20, canv_height - 40)
start_posion = [posion, posion]

canv.create_line(posion, fill='red', width=2, arrow=LAST)
canv.create_line(posion_1, fill='red', width=2, arrow=LAST)

y_and_x_dict = {'x_one': 18 * 3, ‘x_two’: 45 * 3, ‘x_three’: 60 * 3,
‘y_one’: 39 * 3, ‘y_two’: 48 * 3, ‘y_three’: 53 * 3
}

canv.create_text(20, canv_height - 10, text='(0;0)', font'Times New Roman', 14, ‘bold’))
canv.create_text(canv_witdh - 20, canv_height - 10, text='x', font'Times New Roman', 14, ‘bold’))
canv.create_text(10, 20, text='y', font'Times New Roman', 14, ‘bold’))

canv.create_polygon([start_posion + y_and_x_dict, start_posion - y_and_x_dict],
[start_posion + y_and_x_dict, start_posion - y_and_x_dict],
[start_posion + y_and_x_dict, start_posion - y_and_x_dict],
[start_posion + y_and_x_dict, start_posion - y_and_x_dict],
fill=color)

canv.grid(padx=15, pady=15, row=0, column=0)


def choice_color():
color = color_value.get()

many_colors = {0: ‘black’, 1: “DarkGoldenrod1”,
2: ‘azure3’, 3: ‘LightPink2’,
4: ‘red’, 5: ‘green’,
6: ‘blue’, 7: ‘yellow’}

creat_triangle(color=many_colors)


# Begin 2


color_value = tkinter.IntVar()

tkinter.Label(window, text='Выберите слой заливки:', font'Times New Roman', 18, ‘bold’)).grid()

tkinter.Radiobutton(window, text='Черный', variable=color_value, value=0, command=choice_color).grid() # black
tkinter.Radiobutton(window, text='Золотой', variable=color_value, value=1,
command=choice_color).grid() # DarkGoldenrod1
tkinter.Radiobutton(window, text='Серый', variable=color_value, value=2, command=choice_color).grid() # azure3
tkinter.Radiobutton(window, text='Светло-розовый', variable=color_value, value=3,
command=choice_color).grid() # LightPink2
tkinter.Radiobutton(window, text='Красный', variable=color_value, value=4, command=choice_color).grid() # red
tkinter.Radiobutton(window, text='Зеленый', variable=color_value, value=5, command=choice_color).grid() # green
tkinter.Radiobutton(window, text='Синий', variable=color_value, value=6, command=choice_color).grid() # blue
tkinter.Radiobutton(window, text='Желтый', variable=color_value, value=7, command=choice_color).grid() # yellow

creat_triangle()

window.mainloop()

Отредактировано Graf541 (Дек. 14, 2022 17:17:39)

Офлайн

#2 Дек. 14, 2022 22:17:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Прошу помощи с заданием!

Graf541
как можно написать сие творение покомпактнее
Его надо по функциям разнести. Одна функция - одно действие из задания. Также функции могут иметь функций-помощников. Это когда одна функция вызывает другую функцию, чтобы та ей помогла что-то сделать. И у функций-помощников могут быть свои функции-помощники. И тогда, когда у тебя всё по функциям станет разложено, программа и станет “компактной”. То есть она будет не короткой, но она будет легко читаемой и легко понимаемой.



Отредактировано py.user.next (Дек. 14, 2022 22:19:11)

Офлайн

#3 Окт. 27, 2023 12:06:20

kelseyradley
Зарегистрирован: 2023-08-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи с заданием!

Он должен быть разделен на функции. Одна функция — это одно задание. Кроме того, функции могут включать функции-помощников. Это происходит, когда одна функция позволяет другой выполнять задачи. Функции-помощники также могут иметь функции-помощники. Кроме того, когда все функции разделены, программа станет «компактной». Она не будет короткой, но будет легко читаемой и понятной. 
io games 

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version