Форум сайта python.su
Помогите пожалуйста с заданием, в пайтон имею онли 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)
Офлайн
Graf541Его надо по функциям разнести. Одна функция - одно действие из задания. Также функции могут иметь функций-помощников. Это когда одна функция вызывает другую функцию, чтобы та ей помогла что-то сделать. И у функций-помощников могут быть свои функции-помощники. И тогда, когда у тебя всё по функциям станет разложено, программа и станет “компактной”. То есть она будет не короткой, но она будет легко читаемой и легко понимаемой.
как можно написать сие творение покомпактнее
Отредактировано py.user.next (Дек. 14, 2022 22:19:11)
Офлайн
Он должен быть разделен на функции. Одна функция — это одно задание. Кроме того, функции могут включать функции-помощников. Это происходит, когда одна функция позволяет другой выполнять задачи. Функции-помощники также могут иметь функции-помощники. Кроме того, когда все функции разделены, программа станет «компактной». Она не будет короткой, но будет легко читаемой и понятной.
io games
Офлайн