Advertisement
al33kappa

надо сделать чтобы добавляло при "из файла"

Jun 14th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.77 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.  
  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
  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.  
  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. print("intF: " + str(intF))
  96. if (len(txt_list[0].get()) == 0 or len(txt_list[1].get()) == 0 or len(txt_list[2].get()) == 0 or len(
  97. txt_list[3].get()) == 0 or len(txt_list[4].get()) == 0):
  98. EnableAll()
  99. txt_list[0].focus()
  100. messagebox.showerror("Ошибка", "Заполните все поля")
  101. return
  102. else:
  103. for i in range(5):
  104. massiv_a[intS][intF].configure(state=NORMAL)
  105. massiv_a[intS][intF].insert(END, txt_list[i].get())
  106. massiv_a[intS][intF].configure(readonlybackground='white', state='readonly')
  107. print("intF: " + str(intF))
  108. intF += 1
  109. for i in range(len(txt_list)):
  110. massiv_file.append(txt_list[i].get())
  111. btnAdd.configure(state=NORMAL)
  112. btnCopy.configure(state=DISABLED)
  113. clearAll()
  114. disableAll()
  115. intF = 0 # индекс 0 - первый после номера
  116. print("intS1: " + str(intS))
  117. intS += 1
  118. print("intS2: " + str(intS))
  119. btnZapis.config(state=NORMAL)
  120.  
  121. def EnableAll():
  122. for i in range(len(txt_list)):
  123. txt_list[i].configure(readonlybackground='white', state=NORMAL)
  124.  
  125.  
  126. def clearAll():
  127. for i in range(len(txt_list)):
  128. txt_list[i].delete(0, END)
  129.  
  130.  
  131. def disableAll():
  132. for i in range(len(txt_list)):
  133. txt_list[i].configure(readonlybackground='white', state='readonly')
  134. txt_list[-1].configure(disabledbackground='white', state=DISABLED)
  135.  
  136.  
  137. def show_row(event, number):
  138. global present_row
  139. print("numberclick: " + str(number))
  140. past_row = present_row
  141. present_row = number
  142. EnableAll()
  143. clearAll()
  144. for i in range(len(txt_list)):
  145. txt_list[i].insert(END, massiv_a[number][i].get())
  146. massiv_nomera[number - 1].configure(state=NORMAL)
  147. if massiv_nomera[past_row - 1].cget("readonlybackground") == 'lightgreen':
  148. massiv_nomera[past_row - 1].config(readonlybackground='white') # ,state='readonly')
  149. print("выполнилось")
  150. massiv_nomera[number - 1].configure(readonlybackground='lightgreen')
  151. massiv_nomera[number - 1].config(state='readonly')
  152. disableAll()
  153.  
  154. def writetofile():
  155. global MyFile,my_lines
  156. f = open(MyFile,"w",encoding='utf-8')
  157. # asd = f.readlines()
  158. for i in range(len(massiv_file)):
  159. if massiv_file[i]=="Есть" or massiv_file[i] =="Нет":
  160. f.write(massiv_file[i]+" ")
  161. f.write("\n")
  162. else:
  163. f.write(massiv_file[i] + " ")
  164. f.close()
  165. with open(MyFile,"r", encoding='utf-8') as file:
  166. my_lines = file.readlines()
  167. my_lines = [x.split() for x in my_lines]
  168. print(my_lines)
  169. file.close()
  170. # d = 1
  171. # mn = 0
  172. def getfromfile():
  173. global my_lines,lastrow,kolvo_yacheek,massiv_nomera
  174. c=[]
  175.  
  176. with open(MyFile,"r", encoding='utf-8') as file:
  177. my_lines = file.readlines()
  178. my_lines = [x.split() for x in my_lines]
  179. print(my_lines)
  180. file.close()
  181. content_len = len(my_lines)
  182. # if content_len>=lastrow:
  183. # lastrow += 1
  184. # for i in range(content_len):
  185. # if i == 0:
  186. # b = Entry(root, width=massiv_a[0][i]['width'])
  187. # b.insert(END, kolvo_yacheek + 1)
  188. # # b.bind("<Button-1>", lambda event, i=i: show_row(event, nomer_row))
  189. # b.grid(row=lastrow, column=i)
  190. # massiv_nomera.append(b)
  191. # else:
  192. # b = Entry(root, width=massiv_a[0][i]['width'], readonlybackground='white', state='readonly')
  193. # b.grid(row=lastrow, column=i)
  194. # c.append(b)
  195. # massiv_a.append(c)
  196. # # lastrow+=1
  197. # kolvo_yacheek+=1
  198. for row in massiv_a:
  199. for ent in row:
  200. ent.config(state=NORMAL)
  201. for i in range(content_len):
  202. for j in range(5):
  203. massiv_a[i + 1][j].delete(0,END)
  204. massiv_a[i+1][j].insert(0, my_lines[i][j])
  205. for row in massiv_a:
  206. for ent in row:
  207. ent.config(state="readonly")
  208. # with open (MyFile,"r",encoding='utf-8') as file:
  209.  
  210.  
  211. btnAdd = Button(text="Добавить", command=addcells, width=10, font="Arial 12")
  212. btnAdd.place(x=680, y=70)
  213. btnCopy = Button(text="Записать", width=10, command=copy, font="Arial 12")
  214. btnCopy.place(x=680, y=110)
  215. btnZapis = Button(text="В файл", width=10, font="Arial 12",command = writetofile,state=DISABLED)
  216. btnZapis.place(x=680, y=150)
  217. btnGet = Button(text="Из файла", width=10, font="Arial 12",command = getfromfile)
  218. btnGet.place(x=680, y=190)
  219. # btnDelete = Button(text="Удалить", width=10, font="Arial 12")
  220. # btnDelete.place(x=680, y=230)
  221. btnExit = Button(text="Выход", width=10, command=quit, font="Arial 12")
  222. btnExit.place(x=680, y=380)
  223. "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  224. FamTxt = Entry()
  225. FamTxt.place(x=120, y=400)
  226. SrokTxt = Entry()
  227. SrokTxt.place(x=120, y=450)
  228. CountryTxt = Entry()
  229. CountryTxt.place(x=420, y=400)
  230. PriceTxt = Entry()
  231. PriceTxt.place(x=420, y=450)
  232. "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  233. lblFam = Label(text="Наименование: ", font="Arial 12")
  234. lblFam.place(x=0, y=395)
  235. lblSro = Label(text="Срок хранения: ", font="Arial 12")
  236. lblSro.place(x=0, y=445)
  237. lblCountry = Label(text="Страна: ", font="Arial 12")
  238. lblCountry.place(x=350, y=395)
  239. lblPrice = Label(text="Цена: ", font="Arial 12")
  240. lblPrice.place(x=365, y=445)
  241. "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
  242. myspinbox = Spinbox(values=("Есть", "Нет"))
  243. txt_list = [FamTxt, SrokTxt, CountryTxt, PriceTxt, myspinbox]
  244. myspinbox.place(x=350, y=500)
  245. disableAll()
  246. btnCopy.configure(state=DISABLED)
  247. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement