Advertisement
al33kappa

при "из файла" добавляет линии автоматом

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