Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter.filedialog import *
- #from PIL import Image, ImageTk
- from math import *
- class Application(Frame):
- def __init__(self, master):
- super(Application, self).__init__(master)
- self.pack()
- #Menu
- m = Menu(root) # создается объект Меню на главном окне
- root.config(menu=m) # окно конфигурируется с указанием меню для него
- fm = Menu(m) # создается пункт меню с размещением на основном меню (m)
- m.add_cascade(label="Файл", menu=fm) # пункт располагается на основном меню (m)
- fm.add_command(label="Открыть", command=self._openFile) # формируется список команд пункта меню
- fm.add_command(label="Построить график", command=self._createGraphicWindow)
- fm.add_command(label="Выход", command=self._closeWindow)
- hm = Menu(m) # второй пункт меню
- m.add_cascade(label="Помощь", menu=hm)
- hm.add_command(label="Справка по программе", command=self._about)
- #Canvars
- self.canv = Canvas(root, width=800, height=800, bg="lightblue")
- self.canv.pack()
- def _openFile(self):
- filename = askopenfilename()
- if filename != ():
- self.canv.delete("all")
- self.imgobj = self.canv.create_image(0, 0)
- self.img = PhotoImage(filename)
- #self.img = self.img.resize((800, 800), Image.ANTIALIAS)
- #self.photo = ImageTk.PhotoImage(self.img)
- self.canv.itemconfigure(self.imgobj, image=self.img, anchor="nw")
- def _createGraphicWindow(self):
- wnd = Toplevel(root)
- wnd.geometry("400x300")
- var = IntVar()
- radio1 = Radiobutton(wnd, text="sin x", variable=var, value=0)
- radio1.pack()
- radio2 = Radiobutton(wnd, text="cos x", variable=var, value=1)
- radio2.pack()
- radio3 = Radiobutton(wnd, text="tg x", variable=var, value=2)
- radio3.pack()
- radio4 = Radiobutton(wnd, text="ctg x", variable=var, value=3)
- radio4.pack()
- radio5 = Radiobutton(wnd, text="x^2", variable=var, value=4)
- radio5.pack()
- radio6 = Radiobutton(wnd, text="x^3", variable=var, value=5)
- radio6.pack()
- start_value = IntVar()
- finish_value = IntVar()
- entry1 = Entry(wnd, textvariable=start_value)
- entry1.pack()
- entry2 = Entry(wnd, textvariable=finish_value)
- entry2.pack()
- def _isValidValues():
- try:
- self._createGraphic(var.get(), start_value.get(), finish_value.get())
- wnd.destroy()
- except:
- label = Label(wnd, text="Некорректные координаты! Введите снова.")
- label.pack()
- btn_build = Button(wnd, text="Построить график", command=_isValidValues)
- btn_build.pack()
- def _createGraphic(self, var, xs, xf):
- offset = 20
- distance = xs - xf
- self.canv.create_line(1
- , 800 / 2
- , 800
- , 800 / 2
- , arrow = LAST)
- self.canv.create_line(800 / 2 - (xs + xf) / 2 * (800 - offset * 2) / distance
- , 800
- , 800 / 2 - (xs + xf) / 2 * (800 - offset * 2) / distance
- , 1
- , arrow = LAST)
- i = 0
- while i <= distance:
- self.canv.create_line(offset + i / distance * (800 - offset * 2)
- , (800 / 2) - 2
- , offset + i / distance * (800 - offset * 2)
- , (800 / 2) + 5)
- self.canv.create_text(offset + i / distance * (self.width - offset * 2)
- , (800 / 2) + 10
- , text = str(round(start + i, 6))
- , font = ("Helvectica", "10"))
- self.canv.create_line((800 / 2) - 2 - (xs + xf) / 2 * (800 - offset * 2) / 10
- , offset + i / distance * (800 - offset * 2)
- , (800 / 2) + 5 - (xs + xf) / 2 * (800 - offset * 2) / 10
- , offset + i / distance * (800 - offset * 2))
- self.canv.create_text((800 / 2) - 18 - (xs + xf) / 2 * (800 - offset * 2) / 10
- , offset + i / distance * (800 - offset * 2)
- , text = str(round(distance / 2 - i, 6))
- , font = ("Helvectica", "10"))
- i += distance / 10
- def _getFunc(self, var, x):
- if var == 0:
- return cos(x)
- elif var == 1:
- return sin(x)
- elif var == 2:
- return tan(x)
- elif var == 3:
- return cos(x) / sin(x)
- elif var == 4:
- return x * x
- elif var == 5:
- return x * x * x
- def _closeWindow(self):
- root.destroy()
- def _about(self):
- win = Toplevel(root)
- win.title("Справка по программе")
- win.geometry("400x400")
- lab = Label(win,text="Для откртия изображения нажмите: Файл->Открыть\nДля создания графика нажмите: Файл->Построить гарфик")
- lab.pack()
- root = Tk()
- root.title("Задание 14")
- root.geometry("800x800")
- app = Application(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement