@Anastas_os
Пытаюсь программировать)

Как можно реализовать списки для фигуры в этом задании?

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

import tkinter as tk
import tkinter.messagebox as tkmb


class MyWindow(tk.Frame):
    def __init__(self):
       self.root=tk.Tk()
       super().__init__(self.root)
       menu_main=tk.Menu(self.root)
       self.root.config(menu=menu_main)
       menu1=tk.Menu(menu_main)
       menu_main.add_cascade(label="File",menu=menu1)
       menu1.add_command(label="Quit",command=self.ext)
       menu2=tk.Menu(menu_main)
       menu_main.add_cascade(label="Edit",menu=menu2)
       menu2.add_command(label="Input",command=self.inp)
       self.canva=tk.Canvas(self.root,width=600,height=600,bg="white")
       self.canva.pack()
       self.xa=0
       self.ya=0
       self.xb=0
       self.yb=0
       self.xc=0
       self.yc=0
       self.xd=0
       self.yd=0
       self.show()
       self.root.mainloop()
    def show(self):
        self.canva.delete("all")
        self.canva.create_line(self.scale(self.xa),self.scale(self.ya),
                               self.scale(self.xb),self.scale(self.yb))
        self.canva.create_line(self.scale(self.xb),self.scale(self.yb),
                               self.scale(self.xc),self.scale(self.yc))
        self.canva.create_line(self.scale(self.xc),self.scale(self.yc),
                               self.scale(self.xd),self.scale(self.yd))
        self.canva.create_line(self.scale(self.xa),self.scale(self.ya),
                               self.scale(self.xd),self.scale(self.yd))

    def scale(self,value):
         return 300+60*value
                              
    def ext(self):
       if tkmb.askyesno("Exit","Do you want to exit?"):
           self.root.destroy()
    def inp(self):
        child(self)

class child(tk.Toplevel):
    def __init__(self,mother):
        super().__init__()
        self.mother=mother
        self.geometry('300x170+300+250')
        self.resizable(False,False)
        self.grab_set()
        self.focus_set()
        
        self.label1=tk.Label(self,text="XA=")
        self.entry1=tk.Entry(self,width=3,font=10)
        self.label1.grid(row=0,column=0)
        self.entry1.grid(row=0,column=1)

        self.label2=tk.Label(self,text="YA=")
        self.entry2=tk.Entry(self,width=3,font=10)
        self.label2.grid(row=0,column=2)
        self.entry2.grid(row=0,column=3)

        self.label3=tk.Label(self,text="XB=")
        self.entry3=tk.Entry(self,width=3,font=10)
        self.label3.grid(row=1,column=0)
        self.entry3.grid(row=1,column=1)

        self.button1=tk.Button(self,text="Cancel")
        self.button1.grid(row=4,column=6)
        self.button1.bind("<Button-1>",self.ext)

        self.button2=tk.Button(self,text="Ok")
        self.button2.grid(row=4,column=7)
        self.button2.bind("<Button-1>",self.saveext)
        
    def ext(self,event):
        self.destroy()
    def saveext(self,event):
        self.todestroy=True
        
        try:
            if self.entry1.get()!="":
                 self.mother.xa=float(self.entry1.get())      
        except ValueError:
            self.todestroy=False
            tkmb.showinfo("Error",ValueError)

        try:
            if self.entry2.get()!="":
                 self.mother.ya=float(self.entry2.get())      
        except ValueError:
            self.todestroy=False
            tkmb.showinfo("Error",ValueError)

        try:
            if self.entry3.get()!="":
                 self.mother.xb=float(self.entry3.get())      
        except ValueError:
            self.todestroy=False
            tkmb.showinfo("Error",ValueError)

        a=self.mother.xa-self.mother.xb

        self.mother.xb=self.mother.xa-a
        self.mother.yb=self.mother.ya
        self.mother.xc=self.mother.xa-a
        self.mother.yc=self.mother.ya+a
        self.mother.xd=self.mother.xa
        self.mother.yd=self.mother.ya+a

        
        
            
            
        self.mother.show()
        if self.todestroy:
            self.destroy()
        
      

MyWindow()


В программе есть возможность задать три координаты для фигуры во вкладке "Edit" и нарисует квадрат, xa=2, xb=2, xy=4.
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы