Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. Лабораторная работа №2
  2. Задание: На основании иерархии объектов предметной области, заданной вариантом в табл. 7.2, сформировать главное меню проекта. В меню должно быть не менее 20 опций и четырех уровней. 2. У двух конечных опций должны быть горячие клавиши. Выбор одной из таких опций приводит к появление в окне однострочного редактора фамилии студента. Выбор другой такой опции приводит к исчезновению вышеуказанного текста. Создать контекстное меню, привязанное к редактору. В меню пять опций: для задания размера шрифта текста. Выбор опции сопровождается установкой рядом с ней символа √.
  3. Структура проекта: lab2.py
  4. Форма:
  5.  
  6. Листинг программы:
  7. from tkinter import *
  8.  
  9. root = Tk()
  10.  
  11. # Функции
  12. def font(font):
  13. entry.config(font=('Arial', font))
  14.  
  15. k = False
  16. def on():
  17. global entry, k
  18. if k == False:
  19. entry = Entry(width=15)
  20. entry.insert(0, "Махмуджонов")
  21. entry.place(x=220, y=150)
  22. entry.bind("<Button-3>", self)
  23. k = True
  24.  
  25. def off():
  26. global entry, k
  27. if k:
  28. entry.place_forget()
  29. k = False
  30. def on_k(event):
  31. global entry, k
  32. if k == False:
  33. entry = Entry(width=15)
  34. entry.insert(0, "Махмуджонов")
  35. entry.place(x=220, y=150)
  36. entry.bind("<Button-3>", self)
  37. k = True
  38.  
  39. def off_k(event):
  40. global entry, k
  41. if k:
  42. entry.place_forget()
  43. k = False
  44.  
  45. def self(event):
  46. selfmenu.post(event.x_root, event.y_root)
  47.  
  48. # Горячие клавиши
  49. root.bind("<z>", on_k)
  50. root.bind("<x>", off_k)
  51.  
  52. # Контекстное меню
  53. selfmenu = Menu(tearoff=0)
  54. selfmenu.add_radiobutton(label="5", command=lambda: font(5))
  55. selfmenu.add_radiobutton(label="10", command=lambda: font(10))
  56. selfmenu.add_radiobutton(label="15", command=lambda: font(15))
  57. selfmenu.add_radiobutton(label="20", command=lambda: font(20))
  58. selfmenu.add_radiobutton(label="25", command=lambda: font(25))
  59.  
  60. # Окно
  61. root.geometry("500x300")
  62. root.title("Телефоны")
  63.  
  64. # Картинки для меню
  65. image1 = PhotoImage(file="eye.png")
  66. image2 = PhotoImage(file="blind.png")
  67.  
  68. # Меню
  69. mainmenu = Menu(root)
  70. root.config(menu=mainmenu)
  71.  
  72. A = Menu(mainmenu, tearoff=0)
  73. A.add_command(label='Apple', image=image1, compound=LEFT, command=on, accelerator="z")
  74. A.add_command(label='Android', image=image2, compound=LEFT, command=off, accelerator="x")
  75.  
  76. B = Menu(mainmenu, tearoff=0)
  77. B.add_cascade(label='OC:', menu=A)
  78.  
  79.  
  80. C = Menu(mainmenu, tearoff=0)
  81. C.add_command(label='Redmi note 3')
  82. C.add_command(label='Redmi note 4')
  83. C.add_command(label='Redmi note 5')
  84.  
  85. D = Menu(mainmenu, tearoff=0)
  86. D.add_command(label='Galaxy 7')
  87. D.add_command(label='Galaxy 10')
  88.  
  89. E = Menu(mainmenu, tearoff=0)
  90. E.add_command(label='Iphone 6')
  91. E.add_command(label='Iphone 7')
  92. E.add_command(label='Iphone 10')
  93.  
  94. F = Menu(mainmenu, tearoff=0)
  95. F.add_command(label='МТС')
  96. F.add_command(label='ТЕЛЕ2')
  97. F.add_command(label='Мегафон')
  98. F.add_separator()
  99. F.add_cascade(label='Дополнительно...', menu=B)
  100.  
  101. G = Menu(mainmenu, tearoff=0)
  102. G.add_cascade(label='Xiaomi', menu=C)
  103. G.add_cascade(label='Samsung', menu=D)
  104. G.add_command(label='Nokia')
  105.  
  106. H = Menu(mainmenu, tearoff=0)
  107. H.add_command(label='Xiaomi')
  108. H.add_command(label='Samsung')
  109. H.add_cascade(label='Другие...', menu=E)
  110.  
  111. mainmenu.add_cascade(label='Таксофоны', menu=F)
  112. mainmenu.add_cascade(label='Мобильные', menu=H)
  113. mainmenu.add_cascade(label='Стационарные', menu=G)
  114.  
  115. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement