Advertisement
Aqeee

Untitled

May 28th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.82 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter.filedialog import *
  3. #from PIL import Image, ImageTk
  4. from math import *
  5.  
  6. class Application(Frame):
  7. def __init__(self, master):
  8. super(Application, self).__init__(master)
  9. self.pack()
  10. #Menu
  11. m = Menu(root) # создается объект Меню на главном окне
  12. root.config(menu=m) # окно конфигурируется с указанием меню для него
  13. fm = Menu(m) # создается пункт меню с размещением на основном меню (m)
  14. m.add_cascade(label="Файл", menu=fm) # пункт располагается на основном меню (m)
  15. fm.add_command(label="Открыть", command=self._openFile) # формируется список команд пункта меню
  16. fm.add_command(label="Построить график", command=self._createGraphicWindow)
  17. fm.add_command(label="Выход", command=self._closeWindow)
  18. hm = Menu(m) # второй пункт меню
  19. m.add_cascade(label="Помощь", menu=hm)
  20. hm.add_command(label="Справка по программе", command=self._about)
  21. #Canvars
  22. self.canv = Canvas(root, width=800, height=800, bg="lightblue")
  23. self.canv.pack()
  24.  
  25. def _openFile(self):
  26. filename = askopenfilename()
  27. if filename != ():
  28. self.canv.delete("all")
  29. self.imgobj = self.canv.create_image(0, 0)
  30. self.img = PhotoImage(filename)
  31. #self.img = self.img.resize((800, 800), Image.ANTIALIAS)
  32. #self.photo = ImageTk.PhotoImage(self.img)
  33. self.canv.itemconfigure(self.imgobj, image=self.img, anchor="nw")
  34.  
  35. def _createGraphicWindow(self):
  36. wnd = Toplevel(root)
  37. wnd.geometry("400x300")
  38. var = IntVar()
  39. radio1 = Radiobutton(wnd, text="sin x", variable=var, value=0)
  40. radio1.pack()
  41. radio2 = Radiobutton(wnd, text="cos x", variable=var, value=1)
  42. radio2.pack()
  43. radio3 = Radiobutton(wnd, text="tg x", variable=var, value=2)
  44. radio3.pack()
  45. radio4 = Radiobutton(wnd, text="ctg x", variable=var, value=3)
  46. radio4.pack()
  47. radio5 = Radiobutton(wnd, text="x^2", variable=var, value=4)
  48. radio5.pack()
  49. radio6 = Radiobutton(wnd, text="x^3", variable=var, value=5)
  50. radio6.pack()
  51.  
  52. start_value = IntVar()
  53. finish_value = IntVar()
  54.  
  55. entry1 = Entry(wnd, textvariable=start_value)
  56. entry1.pack()
  57.  
  58. entry2 = Entry(wnd, textvariable=finish_value)
  59. entry2.pack()
  60.  
  61. def _isValidValues():
  62. try:
  63. self._createGraphic(var.get(), start_value.get(), finish_value.get())
  64. wnd.destroy()
  65. except:
  66. label = Label(wnd, text="Некорректные координаты! Введите снова.")
  67. label.pack()
  68.  
  69. btn_build = Button(wnd, text="Построить график", command=_isValidValues)
  70. btn_build.pack()
  71.  
  72. def _createGraphic(self, var, xs, xf):
  73. offset = 20
  74. distance = xs - xf
  75. self.canv.create_line(1
  76. , 800 / 2
  77. , 800
  78. , 800 / 2
  79. , arrow = LAST)
  80. self.canv.create_line(800 / 2 - (xs + xf) / 2 * (800 - offset * 2) / distance
  81. , 800
  82. , 800 / 2 - (xs + xf) / 2 * (800 - offset * 2) / distance
  83. , 1
  84. , arrow = LAST)
  85. i = 0
  86. while i <= distance:
  87. self.canv.create_line(offset + i / distance * (800 - offset * 2)
  88. , (800 / 2) - 2
  89. , offset + i / distance * (800 - offset * 2)
  90. , (800 / 2) + 5)
  91. self.canv.create_text(offset + i / distance * (self.width - offset * 2)
  92. , (800 / 2) + 10
  93. , text = str(round(start + i, 6))
  94. , font = ("Helvectica", "10"))
  95. self.canv.create_line((800 / 2) - 2 - (xs + xf) / 2 * (800 - offset * 2) / 10
  96. , offset + i / distance * (800 - offset * 2)
  97. , (800 / 2) + 5 - (xs + xf) / 2 * (800 - offset * 2) / 10
  98. , offset + i / distance * (800 - offset * 2))
  99. self.canv.create_text((800 / 2) - 18 - (xs + xf) / 2 * (800 - offset * 2) / 10
  100. , offset + i / distance * (800 - offset * 2)
  101. , text = str(round(distance / 2 - i, 6))
  102. , font = ("Helvectica", "10"))
  103. i += distance / 10
  104.  
  105. def _getFunc(self, var, x):
  106. if var == 0:
  107. return cos(x)
  108. elif var == 1:
  109. return sin(x)
  110. elif var == 2:
  111. return tan(x)
  112. elif var == 3:
  113. return cos(x) / sin(x)
  114. elif var == 4:
  115. return x * x
  116. elif var == 5:
  117. return x * x * x
  118.  
  119. def _closeWindow(self):
  120. root.destroy()
  121.  
  122. def _about(self):
  123. win = Toplevel(root)
  124. win.title("Справка по программе")
  125. win.geometry("400x400")
  126. lab = Label(win,text="Для откртия изображения нажмите: Файл->Открыть\nДля создания графика нажмите: Файл->Построить гарфик")
  127. lab.pack()
  128.  
  129.  
  130. root = Tk()
  131. root.title("Задание 14")
  132. root.geometry("800x800")
  133. app = Application(root)
  134. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement