Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.55 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import messagebox
  3. from graph import *
  4.  
  5. def check(file): # Проверка на наличие записей в файле
  6. file = open(FILE)
  7. if file.read() != '':
  8. file.close()
  9. return True
  10. else:
  11. file.close()
  12. return None
  13.  
  14. def name_input(): #Функция ввода названия и обработки того же файла
  15. global MASSIVE, kind_of_sport, SECOND_NAME, STROKA, FILE, CHOICE, choice
  16. SECOND_NAME = []
  17. kind_of_sport = []
  18. MASSIVE = []
  19. info = [0, 0]
  20. STROKA = 3
  21.  
  22. if file_name.get() != '': # Проверка на отсутствие ввода
  23. FILE = file_name.get() + '.txt' # Получение введённой информации без указания формата
  24. file_name.delete(0, END)
  25. try: # Обработка случая, когда файла с таким именем не существет
  26. F = open(FILE)
  27. if check(F) == True:
  28. f = open(FILE)
  29. text2.grid(column = 0, row = 1) # 'Выберите вид спорта, по которому хотите вывести информация'
  30. for row in f:
  31. row = row[:-1]
  32. row = row.split(';')
  33. if row[2] not in kind_of_sport:
  34. kind_of_sport.append(row[2]) # Список с видами спорта
  35. SECOND_NAME.append(row[0])
  36. info[0] = row.pop(2)
  37. info[1] = list(row)
  38. MASSIVE.append(list(info))
  39.  
  40. CHOICE_BUTTON = InputButton('Искать по дисциплине:') # Кнопка 'Искать по дисциплине'
  41. choice = Entry(root, width=28) # Поле ввода для дисциплины
  42. choice.grid(column = 1, row = 3) # Размещение поля для ввода дисциплины
  43.  
  44. sprt = 'Виды спорта:n'
  45. for kind in kind_of_sport: # Создание предложения 'Виды спорта:...'
  46. sprt = sprt + kind + ',n'
  47. text5 = Label(root, text = sprt[:-2] + '.',bg = '#3f4b59', fg = 'white', width = 26) # Метка 'Виды спорта......'
  48. text5.grid(column = 1, row = 1)
  49.  
  50. else:
  51. messagebox.showinfo('Ошибка', 'Файл пуст')
  52. except FileNotFoundError: # Обработка случая, когда файла с таким именем не существет
  53. messagebox.showinfo('Ошибка ввода', 'Файла с таким именем не существует') # Всплывающее окно в случае, когда файла с таким именем не существет
  54. SECOND_NAME.sort()
  55. QUIT_button.grid(column = 0, row = STROKA + 2)
  56. else:
  57. QUIT_button.grid(column = 0, row = STROKA + 2)
  58. messagebox.showinfo('Ошибка ввода', 'Вы ничего не ввели') # Всплывающее окно в случае, когда поле ввода пустое
  59.  
  60. class InputButton: # Конпка 'Искать по дисциплине'
  61. def __init__(self, name):
  62. self.button_name = name
  63. self.b = Button(root, text = self.button_name, width = 20, bg = '#3f4b59', fg = 'white', command = self.click) # Создание и разиещение кнопки
  64. self.b.grid(column = 0, row = 3)
  65.  
  66. def click(self): # Действие кнопки при нажатии
  67. vid_sporta = choice.get()
  68. choice.delete(0, END)
  69. graph_name_COLOUR = '#3f4b59'
  70. if vid_sporta in kind_of_sport:
  71.  
  72. COVER = Label(root, width = 80, height = 50, bg = '#3f4b59') #Жёлтый фон
  73. COVER.place(x = 358, y = 51)
  74.  
  75. brushColor('white') # Белый холст для окна с графиком
  76. rectangle(0, 0, scale, scale)
  77. penSize(2)
  78.  
  79. points = []
  80. sportsmen_AGE = []
  81. sportsmen_NAME = {}
  82. VOZRAST = {}
  83.  
  84. col = 2 # Начальная колонка
  85. ROW = 1
  86.  
  87. name_of_sport = Label(root, text = 'Вид спорта', bg = graph_name_COLOUR, fg = 'white') # Названия полей
  88. second_name = Label(root, text = 'Фамилия', width = 15, bg = graph_name_COLOUR, fg = 'white') # Фамилия
  89. age = Label(root, text = 'Возраст', bg = graph_name_COLOUR, fg = 'white') # Возраст
  90. placement = Label(root, text = 'Место', bg = graph_name_COLOUR, fg = 'white') # Занятое место
  91. text3.grid(column = 4, row = 0) # Метка 'Самый молодой спортсмен, занимающийся данным видом спорта'
  92.  
  93.  
  94. youngest_sportsmen.grid(column = 5, row = 0) # Фамилия самого молодого спортсмена
  95. name_of_sport.grid(column = col, row = ROW) # Размещение полей
  96. second_name.grid(column = col + 1, row = ROW) # Фамилия
  97. age.grid(column = col + 2, row = ROW) # Возраст
  98. placement.grid(column = col + 3, row = ROW) # Занятое место
  99.  
  100. nazvanieSPORTA = Label(root, text = vid_sporta, width = 14, bg = graph_name_COLOUR, fg = 'white') # Название вида спорта
  101. nazvanieSPORTA.grid(column = col, row = ROW + 1) # Размещение названия вида спорта
  102.  
  103. for name in SECOND_NAME: # Перебор отсортированного списка
  104. for sportsmen_info in MASSIVE: # Размещение информации о спортсменах
  105. if name in sportsmen_info[1]: # "Сортировка"
  106. if sportsmen_info[0] == vid_sporta: # "Если вид спорта совпадает с названием кнопки"
  107.  
  108.  
  109. sportsmen_AGE.append(sportsmen_info[1][1]) # Список с фамилиями для сортировки
  110. sportsmen_NAME[sportsmen_info[1][1]] = sportsmen_info[1][0] # Словарь с возрастом спортсмена
  111.  
  112. ROW += 1 # Строка для размещения кнопки
  113.  
  114. NAME = Label(root, text = sportsmen_info[1][0], width = 15, bg = graph_name_COLOUR, fg = 'white') # Фамилия
  115. NAME.grid(column = col + 1, row = ROW) # Размещение
  116.  
  117. AGE = Label(root, text = sportsmen_info[1][1], width = 15, bg = graph_name_COLOUR, fg = 'white') # Возраст
  118. AGE.grid(column = col + 2, row = ROW) # Размещение
  119.  
  120. PLACEMENT = Label(root, text = sportsmen_info[1][2], width = 10, bg = graph_name_COLOUR, fg = 'white')# Место
  121. PLACEMENT.grid(column = col + 3, row = ROW) # Размещение
  122. y = 360
  123. line(20, y, y*2, y) # X
  124. line(20, 0, 20, y) # Y
  125.  
  126. for x in range(50, 350, 50):
  127. line(x, y - 5, x, y + 5) # Штрихи по X
  128. line(15, x+10, 25, x+10) # Штрихи по Y
  129.  
  130. y0 = 310 # Нижний штрих по Y
  131. x0 = 50 # Левый штрих по X
  132.  
  133. youngest_sportsmen.configure(text = sportsmen_NAME[str(sportsmen_AGE[0])], bg = '#3f4b59', fg = 'white', width = 14, height = 2) # Вывод фамилии самого молодого спортсмена
  134.  
  135. for i in range(int(min(sportsmen_AGE)), int(max(sportsmen_AGE)) + 1):
  136. VOZRAST[i] = y # Заполнение словаря с возрастом и его координатой
  137. y -= 50
  138.  
  139. for n in sportsmen_AGE:
  140. points.append((x0, VOZRAST[int(n)])) # Заполнение списка с координатами точек
  141. x0 += 50
  142.  
  143. try: # Обработка случая, когда есть лишь одна точка
  144. polyline(points)
  145. except: # Отображение той самой точки
  146. penSize(5)
  147. point(x0, y0) # Ставится лишь одна точка
  148. elif vid_sporta == '':
  149. messagebox.showinfo('Ошибка ввода', 'Ничего не было введено') # Всплывающее окно в случае, если ничего не было введено
  150. else:
  151. messagebox.showinfo('Ошибка ввода', 'Такого вида спорта нет') # Всплывающее окно в случае, если такого вида спорта нет
  152. QUIT_button.grid(column = 0, row = 5)
  153.  
  154. def Quit(): # Функция для кнопки выхода из программы
  155. root.destroy()
  156. close()
  157.  
  158. def start():
  159. global file_name, text2, root, QUIT_button, scale, text3, youngest_sportsmen
  160. START.destroy()
  161. root = Tk()
  162. root.title('Сухомлин, 18-ИЭ-2')
  163. scale = 400 #
  164. canvasSize(scale, scale) #
  165. windowSize(scale, scale) # Настройки графика
  166. penSize(2) #
  167. penColor('black') #
  168.  
  169. MAINCOVER = Label(root, bg = 'black', width = 300, height = 300) # Основной фон
  170. MAINCOVER.place(x = 0, y = 0)
  171. file_name = Entry(root, width=30) #Поле ввода
  172. text1 = Label(root, text = 'Введите название файла', bg = 'black', fg = 'white', height = 3)
  173. text2 = Label(root, text = 'Выберите вид спорта,n информацию по которомуn хотите вывести информацию',bg = '#3f4b59', fg ='white', height = 6)
  174. text3 = Label(root, text = 'Самый молодой спортсмен,n занимающийся данным видом спорта:', bg = '#3f4b59', fg = 'white')
  175. text4 = Label(root, text = 'Сухомлин Георгийn 18-ИЭ-2', bg = 'black', fg = 'white')
  176. youngest_sportsmen = Label(root)
  177. QUIT_button = Button(root, text = 'Выйти', command = Quit, bg = '#3f4b59', fg = 'white') # Кнопка завершения работы
  178. Input_button = Button(root, text = 'Открыть', command = name_input, width = 15, bg = '#3f4b59', fg = 'white') #Кнопка ввода
  179.  
  180. text1.grid(column = 0, row = 0) # "Введите название файла"
  181. text4.grid(column = 3, row = 0)
  182. file_name.grid(column = 1, row = 0) # Поле ввода
  183. Input_button.grid(column = 2, row = 0) # Кнопка ввода
  184. QUIT_button.grid(column = 0, row = 2)
  185.  
  186. file_name.focus() # Начальная фокусировка на поле ввода
  187. run()
  188. root.mainloop()
  189.  
  190.  
  191. START = Tk()
  192. START.title('Добро пожаловать')
  193. START.geometry('300x100+850+400')
  194. cover = Label(START, bg = 'black',height = 100, width = 100)
  195. cover.place(x = 0, y = 0)
  196. start_button = Button(START, text = 'Начать работу', command = start, width = 30, height = 5, bg = '#3f4b59', fg = 'white')
  197. start_button.place(x = 40, y = 7)
  198. START.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement