Advertisement
al33kappa

почти пиздато, удалить и изменить не сделаны

Jun 14th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.72 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import messagebox
  3. from pprint import pprint as p
  4.  
  5. root = Tk()
  6. names = ["№", "Наименование", "Срок хранения", "Страна", "Цена", "В наличии"]
  7. root.title("Продукты в магазине")
  8. root.geometry("830x600")
  9. lastrow = 0
  10. a = []
  11. massiv_file = []
  12. massiv_nomera = []
  13. present_row = 0
  14. massiv_a = []
  15. indeks_intselect = 0
  16. kolvo_yacheek = 0
  17. MyFile = "qwerty.txt"
  18. my_lines = []
  19. edit_or_add = 0
  20. flag = True
  21.  
  22. def defaultcells():
  23. global lastrow
  24. a = []
  25. for i in range(6):
  26. b = Entry(root)
  27. b.grid(row=lastrow, column=i)
  28. a.append(b)
  29. lastrow += 1
  30. massiv_a.append(a)
  31. a[0].configure(width=3)
  32. a[1].configure(width=20)
  33. a[2].configure(width=20)
  34. a[3].configure(width=20)
  35. a[4].configure(width=20)
  36. a[5].configure(width=20)
  37. for i in range(6):
  38. a[i].insert(END, names[i])
  39. a[i].configure(readonlybackground='white', state='readonly')
  40. print('lastrow + ' + str(lastrow))
  41.  
  42.  
  43. kontent = []
  44.  
  45.  
  46. def addcells():
  47. global kolvo_yacheek, massiv_a, lastrow, edit_or_add, flag
  48. c = []
  49. if lastrow == 13:
  50. btnAdd.configure(state=DISABLED)
  51. for i in range(6):
  52. if i == 0:
  53. b = Entry(root, width=massiv_a[0][i]['width'])
  54. b.insert(END, kolvo_yacheek + 1)
  55. # b.bind("<Button-1>", lambda event, i=i: show_row(event, nomer_row))
  56. b.grid(row=lastrow, column=i)
  57. massiv_nomera.append(b)
  58. else:
  59. b = Entry(root, width=massiv_a[0][i]['width'], readonlybackground='white', state='readonly')
  60. b.grid(row=lastrow, column=i)
  61. c.append(b)
  62.  
  63. print("last1: " + str(lastrow))
  64. massiv_a.append(c)
  65. lastrow += 1
  66. for i in range(lastrow):
  67. if i == 0:
  68. pass
  69. else:
  70. massiv_a[i][0].bind("<Button-1>", lambda event, i=i: show_row(event, i))
  71. massiv_a[i][1].bind("<Button-1>", lambda event, i=i: show_row(event, i))
  72. massiv_a[i][2].bind("<Button-1>", lambda event, i=i: show_row(event, i))
  73. massiv_a[i][3].bind("<Button-1>", lambda event, i=i: show_row(event, i))
  74. massiv_a[i][4].bind("<Button-1>", lambda event, i=i: show_row(event, i))
  75. flag = False
  76. print("last2: " + str(lastrow))
  77. EnableAll()
  78. txt_list[0].focus()
  79. txt_list[-1].configure(readonlybackground='white', state='readonly')
  80. btnCopy.configure(state=NORMAL)
  81. btnAdd.configure(state=DISABLED)
  82. print("lastrow: " + str(lastrow))
  83. kolvo_yacheek += 1
  84. print("kolvo_yacheek: " + str(kolvo_yacheek))
  85. clearAll()
  86. edit_or_add = 1
  87.  
  88.  
  89. defaultcells()
  90.  
  91.  
  92. def quit():
  93. root.destroy()
  94.  
  95.  
  96. intS = 1
  97. intF = 0
  98.  
  99.  
  100. def copy():
  101. global intF, txt_list, intS
  102. if edit_or_add == 1:
  103. print("intF: " + str(intF))
  104. if (len(txt_list[0].get()) == 0 or len(txt_list[1].get()) == 0 or len(txt_list[2].get()) == 0 or len(
  105. txt_list[3].get()) == 0 or len(txt_list[4].get()) == 0):
  106. EnableAll()
  107. txt_list[0].focus()
  108. messagebox.showerror("Ошибка", "Заполните все поля")
  109. return
  110. else:
  111. for i in range(5):
  112. massiv_a[intS][intF].configure(state=NORMAL)
  113. massiv_a[intS][intF].insert(END, txt_list[i].get())
  114. massiv_a[intS][intF].configure(readonlybackground='white', state='readonly')
  115. print("intF: " + str(intF))
  116. intF += 1
  117. for i in range(len(txt_list)):
  118. massiv_file.append(txt_list[i].get())
  119. btnAdd.configure(state=NORMAL)
  120. btnCopy.configure(state=DISABLED)
  121. clearAll()
  122. disableAll()
  123. intF = 0 # индекс 0 - первый после номера
  124. print("intS1: " + str(intS))
  125. intS += 1
  126. print("intS2: " + str(intS))
  127. btnZapis.config(state=NORMAL)
  128. # btnChange.config(state=NORMAL)
  129. btnPerezapis.config(state=NORMAL)
  130. elif edit_or_add == 0:
  131. global my_lines
  132. my_lines[present_row - 1][0] = txt_list[0].get()
  133. my_lines[present_row - 1][1] = txt_list[1].get()
  134. my_lines[present_row - 1][2] = txt_list[2].get()
  135. my_lines[present_row - 1][3] = txt_list[3].get()
  136. my_lines[present_row - 1][4] = txt_list[4].get()
  137. getfromfile()
  138.  
  139.  
  140. def EnableAll():
  141. for i in range(len(txt_list)):
  142. txt_list[i].configure(readonlybackground='white', state=NORMAL)
  143.  
  144.  
  145. def clearAll():
  146. for i in range(len(txt_list)):
  147. txt_list[i].delete(0, END)
  148.  
  149.  
  150. def disableAll():
  151. for i in range(len(txt_list)):
  152. txt_list[i].configure(readonlybackground='white', state='readonly')
  153. txt_list[-1].configure(disabledbackground='white', state=DISABLED)
  154.  
  155.  
  156. def show_row(event, number):
  157. global present_row
  158. past_row = present_row
  159. present_row = number
  160. print("present: " + str(present_row))
  161. EnableAll()
  162. clearAll()
  163. for i in range(len(txt_list)):
  164. txt_list[i].insert(END, massiv_a[number][i].get())
  165. massiv_nomera[number - 1].configure(state=NORMAL)
  166. if massiv_nomera[past_row - 1].cget("readonlybackground") == 'lightgreen':
  167. massiv_nomera[past_row - 1].config(readonlybackground='white') # ,state='readonly')
  168. print("выполнилось")
  169. massiv_nomera[number - 1].configure(readonlybackground='lightgreen')
  170. massiv_nomera[number - 1].config(state='readonly')
  171. disableAll()
  172.  
  173.  
  174. def writetofile():
  175. global MyFile, my_lines,flag
  176. f = open(MyFile, "a", encoding='utf-8')
  177. # asd = f.readlines()
  178. for i in range(len(massiv_file)):
  179. if massiv_file[i] == "Есть" or massiv_file[i] == "Нет":
  180. f.write(massiv_file[i] + " ")
  181. f.write("\n")
  182. else:
  183. f.write(massiv_file[i] + " ")
  184. f.close()
  185.  
  186.  
  187. with open(MyFile, "r", encoding='utf-8') as file:
  188. my_lines = file.readlines()
  189. my_lines = [x.split() for x in my_lines]
  190. print(my_lines)
  191. file.close()
  192.  
  193. # d = 1
  194. # mn = 0
  195. def getfromfile():
  196. global my_lines, lastrow, kolvo_yacheek, massiv_nomera,intF,intS
  197. c = []
  198.  
  199. with open(MyFile, "r", encoding='utf-8') as file:
  200. my_lines = file.readlines()
  201. my_lines = [x.split() for x in my_lines]
  202. print(my_lines)
  203. file.close()
  204. content_len = len(my_lines)
  205. if content_len >= lastrow:
  206. for i in range((content_len + 1) - lastrow):
  207. addcells()
  208. intS += 1
  209. btnAdd.config(state=NORMAL)
  210. for row in massiv_a:
  211. for ent in row:
  212. ent.config(state=NORMAL)
  213. for i in range(content_len):
  214. for j in range(5):
  215. massiv_a[i + 1][j].delete(0, END)
  216. massiv_a[i + 1][j].insert(0, my_lines[i][j])
  217.  
  218. for row in massiv_a:
  219. for ent in row:
  220. ent.config(state="readonly")
  221. # with open (MyFile,"r",encoding='utf-8') as file:
  222.  
  223.  
  224. def change():
  225. global edit_or_add
  226. btnCopy.config(state=NORMAL)
  227. for nk in txt_list:
  228. nk.config(state=NORMAL)
  229. edit_or_add = 0
  230. def perezapis():
  231. global flag
  232. f = open(MyFile, "w", encoding='utf-8')
  233. # asd = f.readlines()
  234. for i in range(len(massiv_file)):
  235. if massiv_file[i] == "Есть" or massiv_file[i] == "Нет":
  236. f.write(massiv_file[i] + " ")
  237. f.write("\n")
  238. else:
  239. f.write(massiv_file[i] + " ")
  240. f.close()
  241.  
  242. btnAdd = Button(text="Добавить", command=addcells, width=13, font="Arial 12")
  243. btnAdd.place(x=680, y=70)
  244. btnCopy = Button(text="Записать", width=13, command=copy, font="Arial 12")
  245. btnCopy.place(x=680, y=110)
  246. btnZapis = Button(text="В файл", width=13, font="Arial 12", command=writetofile, state=DISABLED)
  247. btnZapis.place(x=680, y=150)
  248. btnGet = Button(text="Из файла", width=13, font="Arial 12", command=getfromfile)
  249. btnGet.place(x=680, y=190)
  250. btnChange = Button(text="Изменить", width=13, font="Arial 12", command=change, state=DISABLED)
  251. btnChange.place(x=680, y=230)
  252. btnPerezapis = Button(text="Перезаписать",width = 13,font="Arial 12",command = perezapis,state=DISABLED)
  253. btnPerezapis.place(x=680,y=270)
  254. # btnDelete = Button(text="Удалить", width=10, font="Arial 12")
  255. # btnDelete.place(x=680, y=230)
  256. btnExit = Button(text="Выход", width=10, command=quit, font="Arial 12")
  257. btnExit.place(x=680, y=380)
  258. "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  259. FamTxt = Entry()
  260. FamTxt.place(x=120, y=400)
  261. SrokTxt = Entry()
  262. SrokTxt.place(x=120, y=450)
  263. CountryTxt = Entry()
  264. CountryTxt.place(x=420, y=400)
  265. PriceTxt = Entry()
  266. PriceTxt.place(x=420, y=450)
  267. "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  268. lblFam = Label(text="Наименование: ", font="Arial 12")
  269. lblFam.place(x=0, y=395)
  270. lblSro = Label(text="Срок хранения: ", font="Arial 12")
  271. lblSro.place(x=0, y=445)
  272. lblCountry = Label(text="Страна: ", font="Arial 12")
  273. lblCountry.place(x=350, y=395)
  274. lblPrice = Label(text="Цена: ", font="Arial 12")
  275. lblPrice.place(x=365, y=445)
  276. "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  277. myspinbox = Spinbox(values=("Есть", "Нет"))
  278. txt_list = [FamTxt, SrokTxt, CountryTxt, PriceTxt, myspinbox]
  279. myspinbox.place(x=350, y=500)
  280. disableAll()
  281. btnCopy.configure(state=DISABLED)
  282. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement