Advertisement
al33kappa

Untitled

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