Advertisement
Guest User

Untitled

a guest
Mar 16th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.36 KB | None | 0 0
  1. import pymysql.cursors
  2. import pymysqlpool
  3. from tkinter import *
  4. from datetime import datetime
  5. import tkinter.ttk
  6. from PIL import *
  7. import os
  8.  
  9.  
  10.  
  11. class DBExecutor():
  12. def __init__(self, **connection_params):
  13. self._connection_params = connection_params
  14. self._connection = None
  15.  
  16. def _connect(self):
  17. self._connection = pymysql.connect(**self._connection_params)
  18. def execute(self, sql, *args, **kwargs):
  19. if not (self._connection and self._connection.ping(True)):
  20. self._connect()
  21. with self._connection.cursor() as cursor:
  22. cursor.execute(sql, *args, **kwargs)
  23. self._connection.commit()
  24.  
  25. # использование
  26. db_executor = DBExecutor(host='127.0.0.1', user='root', password='', db='python', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor, autocommit=True)
  27.  
  28.  
  29.  
  30.  
  31.  
  32. def create_widgets_in_first_frame():
  33. # Создать ярлык для рамки
  34. first_window_label = tkinter.ttk.Label(first_frame, text='Выбор Тары',font=("Helvetica", 18))
  35. first_window_label.grid(column=0, row=0, pady=10, padx=10, sticky=(tkinter.N))
  36. #данный код выбирает нажатую вид бутылки и сохраняет данные в этой переменной
  37.  
  38.  
  39. global var
  40. var = IntVar()
  41. var.set(0)
  42. #t05 = Radiobutton(first_frame,compound='center', width=55, height=55, text="Тара: 0.5", variable=var, value=0, indicatoron=0).grid(row=0, column=1,pady=20, padx=20)
  43. #t07 = Radiobutton(first_frame, width=55, height=55, text="Тара: 0.7", variable=var, value=1, indicatoron=0).grid(row=0, column=2,pady=20, padx=20)
  44.  
  45.  
  46. def quitApp():
  47. var.set(0)
  48. first_frame.grid_forget()
  49. third_frame.grid_forget()
  50. second_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  51. def quitApp2():
  52. var.set(1)
  53. first_frame.grid_forget()
  54. third_frame.grid_forget()
  55. second_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  56. global background_img
  57. global scanBtn_img
  58. background_img = PhotoImage(file="img/05.gif")
  59. scanBtn_img = PhotoImage(file="img/07.gif")
  60.  
  61. background = tkinter.Button(first_frame, image=background_img, command = quitApp).grid(row=7, column=2, padx=30, pady=30)
  62. quitButton = tkinter.Button(first_frame, image=scanBtn_img, command = quitApp2).grid(row=7, column=3, padx=30)
  63. global backgroundimage
  64. backgroundimage = background_img # сохранить ссылку!
  65.  
  66.  
  67. # Создать кнопку для рамки
  68. #first_window_quit_button = tkinter.Button(first_frame, text = "Закрыть", command = quit_program)
  69. #first_window_quit_button.grid(row=7, column=2, padx=20)
  70. #first_window_next_button = tkinter.Button(first_frame, text = "Далее", command = call_second_frame_on_top)
  71. #first_window_next_button.grid(row=7, column=3, padx=20)
  72.  
  73. def create_widgets_in_second_frame():
  74. # Create the label for the frame
  75. second_window_label = tkinter.ttk.Label(second_frame, text='Выбор вида водки')
  76. second_window_label.grid(column=0, row=0, pady=10, padx=10, sticky=(tkinter.N))
  77.  
  78. #Второе окно
  79.  
  80.  
  81. if var.get() == 0:
  82. listbox_items_05 = ['Айдабульская Люкс', 'Айдабульская Первая', 'Айдабульская Особая',
  83. 'Айдабульская Наша', 'Айдабульская', 'Айдабульская (голубая)',
  84. 'Айдабульская Классическая', 'Айдабульская Хрустальная',
  85. 'Айдабульская Посольская', 'BURABAY глянцевая', 'BURABAY матовая']
  86.  
  87. def select_item(event):
  88. global listbox_value_05
  89. listbox_value_05 = (listbox.get(listbox.curselection()))
  90.  
  91. listbox_05 = Listbox(second_frame, width=50, height=30, font=('times', 15))
  92. listbox_05.bind('<<ListboxSelect>>', select_item)
  93. listbox_05.grid(row=0, column=1, pady=5, padx=5, columnspan=2)
  94.  
  95. for item in listbox_items_05:
  96. listbox_05.insert(END, item)
  97.  
  98. elif var.get() == 1:
  99. listbox_items_07 = ['Айдабульская Люкс', 'Айдабульская Первая', 'Айдабульская Особая',
  100. 'Айдабульская Наша', 'Айдабульская', 'Айдабульская (голубая)',
  101. 'Айдабульская "A"белая глянцевая', 'Айдабульская "А"черная глянцевая',
  102. 'Айдабульская "А"матовая', 'Айдабульская "А"голубая',
  103. 'Айдабульская "А"прозрачная (гол.)', 'Айдабульская Классическая',
  104. 'Айдабульская Хрустальная', 'Айдабульская Посольская', 'Айдабульская матовая 3D',
  105. 'Айдабульская матовая Квадрат', 'Айдабульская матовая Премиум',
  106. 'Айдабульская матовая Степь']
  107.  
  108. def select_item(event):
  109. global listbox_value_07
  110. listbox_value_07 = (listbox.get(listbox.curselection()))
  111.  
  112. listbox_07 = Listbox(second_frame, width=50, height=30, font=('times', 15))
  113. listbox_07.bind('<<ListboxSelect>>', select_item)
  114. listbox_07.grid(row=0, column=1, pady=5, padx=5, columnspan=2)
  115.  
  116. for item in listbox_items_07:
  117. listbox_07.insert(END, item)
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. # Create the button for the frame
  125. second_window_back_button = tkinter.Button(second_frame, text = "Назад", width=20, height=6, command = call_first_frame_on_top)
  126. second_window_back_button.grid(row=7, column=2, padx=20)
  127. second_window_next_button = tkinter.Button(second_frame, text = "Далее", width=20, height=6, command = call_third_frame_on_top)
  128. second_window_next_button.grid(row=7, column=3, padx=20)
  129.  
  130. def create_widgets_in_third_frame():
  131. # Create the label for the frame
  132. third_window_label = tkinter.ttk.Label(third_frame)
  133. third_window_label.grid(column=0, row=0, pady=10, padx=10, sticky=(tkinter.N))
  134.  
  135.  
  136. def change(event=None):
  137. if var.get() == 0:
  138. code_label = code.get()
  139. company_label = 'Натур продукт'
  140. country = 'Казахстан'
  141. time = datetime.strftime(datetime.now(), "%H:%M:%S %d.%m.%Y")
  142. if len(code.get()) == 0:
  143. cmp_txt.insert(END, 'Введите код' + "\n")
  144. code_entry.delete(0, END)
  145. elif len(code.get()) != 0:
  146. # Отправка SQL запроса
  147. try:
  148. db_executor.execute("INSERT INTO `scaner2` (`number`, `tara`, `name_vodka`, `time`, `name_company`, country) VALUES (%s,%s, %s, %s, %s, %s)", (code_label, '0.5', listbox_value, time, company_label, country))
  149. print(code.get(), time, company_label, listbox_value)
  150. cmp_txt.insert(END, 'Код: ' + code_label + ' Тара: '+'0.5 '+' Название водки: '+ listbox_value + ' Время: ' + time + ' Название компании: ' + company_label + "\n")
  151. code_entry.delete(0, END)
  152. except pymysql.err.IntegrityError:
  153. cmp_txt.insert(END, 'Такое код уже есть в базе' + "\n")
  154. code_entry.delete(0, END)
  155. elif var.get() == 1:
  156. code_label = code.get()
  157. company_label = 'Натур продукт'
  158. country = 'Казахстан'
  159. time = datetime.strftime(datetime.now(), "%H:%M:%S %d.%m.%Y")
  160. if len(code.get()) == 0:
  161. cmp_txt.insert(END, 'Введите код' + "\n")
  162. code_entry.delete(0, END)
  163. elif len(code.get()) != 0:
  164. try:
  165. # Отправка SQL запроса
  166. db_executor.execute("INSERT INTO `scaner2` (`number`, `tara`, `name_vodka`, `time`, `name_company`, country) VALUES (%s,%s, %s, %s, %s, %s)", (code_label, '0.7', listbox_value, time, company_label, country))
  167. print(code.get(), time, company_label)
  168. cmp_txt.insert(END, 'Код: ' + code_label + ' Тара: '+'0.7 '+' Название водки: '+ listbox_value + ' Время: ' + time + ' Название компании: ' + company_label + "\n")
  169. code_entry.delete(0, END)
  170. except pymysql.err.IntegrityError:
  171. cmp_txt.insert(END, 'Такое код уже есть в базе' + "\n")
  172. code_entry.delete(0, END)
  173.  
  174.  
  175. code = StringVar()
  176. code_label = Label(third_frame,text="Введите штрихкод:").grid(row=0, column=0, sticky=W, pady=10, padx=10)
  177. code_entry = Entry(third_frame,textvariable=code)
  178. code_entry.bind('<Return>', change)
  179. code_entry.focus_set()
  180. code_entry.grid(row=0, column=1, columnspan=2, sticky=W+E, padx=10)
  181.  
  182.  
  183.  
  184. cmp_txt = Text(third_frame, width=123, height=50)
  185. cmp_txt.grid(row=4, column=1, columnspan=2)
  186. scroll = Scrollbar(command=cmp_txt.yview)
  187.  
  188. cmp_txt.config(yscrollcommand=scroll.set)
  189. button = Button(third_frame,text="Отправить", width=20, height=6, command=change).grid(row=7, column=3, padx=20)
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. # Create the button for the frame
  201. third_window_back_button = tkinter.Button(third_frame, text = "Назад", width=20, height=6, command = call_second_frame_on_top)
  202. third_window_back_button.grid(row=7, column=1,pady=20, padx=20)
  203.  
  204. def call_first_frame_on_top():
  205. # This function can be called only from the second window.
  206. # Hide the second window and show the first window.
  207. second_frame.grid_forget()
  208. first_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  209.  
  210. def call_second_frame_on_top():
  211. # This function can be called from the first and third windows.
  212. # Hide the first and third windows and show the second window.
  213. first_frame.grid_forget()
  214. third_frame.grid_forget()
  215. second_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  216.  
  217. def call_third_frame_on_top():
  218. # This function can only be called from the second window.
  219. # Hide the second window and show the third window.
  220. second_frame.grid_forget()
  221. third_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  222.  
  223. def quit_program():
  224. root_window.destroy()
  225.  
  226. ###############################
  227. # Main program starts here :) #
  228. ###############################
  229.  
  230. # Создать корневое окно графического интерфейса.
  231. root_window = tkinter.Tk()
  232. root_window.geometry('1200x800')
  233. root_window.title('Считыватель Штрих кодов')
  234. # Определить размер окна
  235. window_width = 1200
  236. window_heigth = 800
  237.  
  238.  
  239. # Создайте фреймы внутри корневого окна для хранения других элементов графического интерфейса. Все кадры должны быть созданы в основной программе, иначе они не доступны в функциях.
  240. first_frame=tkinter.ttk.Frame(root_window, width=window_width, height=window_heigth)
  241. first_frame['borderwidth'] = 2
  242. first_frame['relief'] = 'sunken'
  243. first_frame.grid(column=0, row=0, padx=20, pady=5)
  244.  
  245. second_frame=tkinter.ttk.Frame(root_window, width=600, height=600)
  246. second_frame['borderwidth'] = 2
  247. second_frame['relief'] = 'sunken'
  248. second_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  249.  
  250. third_frame=tkinter.ttk.Frame(root_window, width=window_width, height=window_heigth)
  251. third_frame['borderwidth'] = 2
  252. third_frame['relief'] = 'sunken'
  253. third_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
  254.  
  255. # Create all widgets to all frames
  256. create_widgets_in_third_frame()
  257. create_widgets_in_second_frame()
  258. create_widgets_in_first_frame()
  259.  
  260. # Скрыть все кадры в обратном порядке, но оставить первый кадр видимым (невидимым).
  261. third_frame.grid_forget()
  262. second_frame.grid_forget()
  263.  
  264. # Start tkinter event - loop
  265. root_window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement