· 6 years ago · Apr 26, 2019, 10:48 AM
1from tkinter import *
2import sqlite3
3
4
5# Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‡Ð°ÐµÑ‚ за добавление билета в базу данных и открывает окно купленного билета
6def append():
7 # без global в Ñтой функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð±ÑƒÐ´ÐµÑ‚ менÑть Ñти переменные
8 global place
9
10 # получаем текущие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² полÑÑ… ввода по выбранному типу билета
11 # ticket_type = 0 - взроÑлый билет
12 # ticket_type = 1 - льготый
13 # ticket_type = 2 - детÑкий
14 ticket_type = check_type.get()
15 passport = textbox_passport[ticket_type].get()
16 name = textbox_name[ticket_type].get()
17 gender = check_gender[ticket_type].get()
18 age = textbox_age[ticket_type].get()
19 # document - Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ñ‚Ð²ÐµÑ‡Ð°ÐµÑ‚ за доп. документ, который еÑть у льготного типа билета или детÑкого
20 # у взроÑлого (ticket type id = 0) Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð²Ñегда пуÑтаÑ
21 document = ""
22 if ticket_type != 0:
23 document = textbox_document[ticket_type].get()
24 # дату получаем из Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° в главном окне
25 date = textbox_date.get()
26
27 # проверÑем, еÑли оÑновные Ð¿Ð¾Ð»Ñ Ñƒ билета не заполненны, то не даем купить билет
28 if passport == "" or name == "" or age == "":
29 print("Ðеобходимо заполнить вÑе полÑ!")
30 return
31
32 # Ñто три проверки на то, ÑущеÑтвуют ли уже билеты Ñ Ñ‚Ð°ÐºÐ¸Ð¼Ð¸ данным на Ñтот поезд
33 if ticket_type == 0:
34 # Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ кол-во билетов,
35 # у которого которые равны текущим значениÑм passport, travelFrom, travelTo, date
36 check = c.execute("SELECT COUNT(*) FROM " + table_name + " WHERE passport=? AND travel_from=? AND travel_to=? AND date=?", [passport, cities[travelFrom], cities[travelTo], date]).fetchone()[0]
37 # еÑли еÑть хоть 1 такой билет, то говорим что нельзÑ
38 if check != 0:
39 print("Билет на паÑпорт " + passport + " уже куплен на Ñтот поезд!")
40 return
41 elif ticket_type == 1:
42 check = c.execute("SELECT COUNT(*) FROM " + table_name + " WHERE document=? AND travel_from=? AND travel_to=? AND date=?", [document, cities[travelFrom], cities[travelTo], date]).fetchone()[0]
43 if check != 0:
44 print("Билет Ñ Ñтим льготным документом " + passport + " уже куплен на Ñтот поезд!")
45 return
46 elif ticket_type == 2:
47 check = c.execute("SELECT COUNT(*) FROM " + table_name + " WHERE document=? AND travel_from=? AND travel_to=? AND date=?", [document, cities[travelFrom], cities[travelTo], date]).fetchone()[0]
48 if check != 0:
49 print("Билет Ñ Ñтим ÑвидетельÑтвом Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ " + passport + " уже куплен на Ñтот поезд!")
50 return
51
52 if ticket_type == 2:
53 parent = c.execute("SELECT COUNT(*) FROM " + table_name + " WHERE passport=?", [passport]).fetchone()[0]
54 if parent <= 0:
55 print("ПаÑпорт взроÑлого не найден! РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ðµ завершена!")
56 return
57
58 # поÑылаю Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² базу данных, добавлÑÑ Ð½Ð¾Ð²ÑƒÑŽ запиÑÑŒ билета Ñо вÑеми данными
59 query = 'insert into prof values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
60 c.execute(query, (ticket_type, passport, name, gender, age, place, cities[travelFrom], cities[travelTo], date, document))
61 conn.commit()
62 # приÑваиваю значению меÑта текущее кол-во запиÑей в бд
63 place = c.execute("SELECT COUNT(*) FROM " + table_name).fetchone()[0]
64 # выводим Ð¸Ð¼Ñ ÐºÑƒÐ¿Ð¸Ð²ÑˆÐµÐ³Ð¾
65 print("Билет на Ð¸Ð¼Ñ " + name + " куплен!")
66 # переключаем окно на окно купленного билета
67 switch_to_bought()
68
69
70# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ñет вÑе Ð¿Ð¾Ð»Ñ Ð² окне печати билета и открывает окошко печати
71def print_ticket():
72 global place
73 # получаем необходимые данные из полей ввода
74 ticket_type = check_type.get()
75 passport = textbox_passport[ticket_type].get()
76 name = textbox_name[ticket_type].get()
77 age = textbox_age[ticket_type].get()
78 # заполнÑем поле document, еÑли билет детÑкий или льготный
79 document = ""
80 if ticket_type == 1:
81 document = "Льгота: " + textbox_document[ticket_type].get()
82 elif ticket_type == 2:
83 document = "Св. о рождении: " + textbox_document[ticket_type].get()
84
85 # заполнÑем вÑе Ñтроки в окне данными
86 # в наших вагонах по 54 меÑта и Ñчитаем номер вагона и меÑто в вагоне
87 var_print_place.set("МеÑто: " + str(place % 54))
88 var_print_carriage.set("Вагон: " + str(place // 54 + 1))
89 var_print_document.set(document)
90 if ticket_type == 2:
91 var_print_passport.set("ПаÑпорт взроÑлого: " + passport)
92 else:
93 var_print_passport.set("ПаÑпорт: " + passport)
94 var_print_number.set("Билет №" + str(place))
95 var_print_age.set("ВозраÑÑ‚: " + age)
96 var_print_date.set(textbox_date.get())
97 var_print_from.set(cities[travelFrom])
98 var_print_to.set(cities[travelTo])
99 var_print_type.set(ticket_type_names[ticket_type])
100 var_print_name.set("ФИО: " + name)
101
102 # выключаем окно купленного билета и включаем окно печати
103 frame_bought.pack_forget()
104 frame_print.pack()
105
106
107# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°ÐµÐ¼ окно на окно купленного билета
108def switch_to_bought():
109 # уÑтанавливаем заголовок окнку в виде маршрута ÑледованиÑ, Ð´Ð»Ñ ÐºÑ€Ð°Ñоты
110 root.title(cities[travelFrom] + " -> " + cities[travelTo] + ": " + textbox_date.get())
111 # получаем номер типа билета
112 ticket_type = check_type.get()
113 # УÑтавновка отображаемых данных о купленном билете
114 var_bought_name.set("Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°: " + textbox_name[ticket_type].get())
115 var_bought_ticket_id.set("Ðомер меÑта: " + str(place))
116 var_bought_travel.set("Маршрут: из " + cities[travelFrom] + " в " + cities[travelTo] + ". Дата: " + textbox_date.get())
117 # выключаем на вÑÑкий Ñлучай вÑе окна и включаем только окно купленного билета
118 frame_print.pack_forget()
119 frame_main.pack_forget()
120 frame_buy.pack_forget()
121 frame_bought.pack()
122
123
124# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ окно Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ данных и покупкой билета
125def switch_to_buy():
126 # проверÑем, чтобы поезд не шел в город Ð¾Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ дата не была пуÑтой
127 if travelFrom == travelTo or travelTo == -1 or travelFrom == -1 or textbox_date.get() == "":
128 print("По данному направлению поездов нет!")
129 return
130
131 # уÑтавнавливаем заголовок окна краÑивый
132 root.title(cities[travelFrom] + " -> " + cities[travelTo] + ": " + textbox_date.get())
133 # включаем вÑе окна кроме окна покупки билета
134 frame_print.pack_forget()
135 frame_bought.pack_forget()
136 frame_main.pack_forget()
137 frame_buy.pack()
138
139
140# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ÐºÑ€Ð°Ñ‹Ð²Ð°ÐµÑ‚ оÑновное окно и очищает вÑе Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° в окне покупки
141def switch_to_main():
142 # уÑтаанвливаем заголовок главного окна
143 root.title("Продажа билетов")
144
145 # очиÑтка вÑех полей ввода в окне покупки
146 for i in range(3):
147 textbox_age[i].delete(0, END)
148 for i in range(3):
149 textbox_name[i].delete(0, END)
150 for i in range(3):
151 textbox_passport[i].delete(0, END)
152 for i in range(3):
153 if i != 0:
154 textbox_document[i].delete(0, END)
155
156 # выключаем вÑе, кроме главного окна
157 frame_print.pack_forget()
158 frame_bought.pack_forget()
159 frame_buy.pack_forget()
160 frame_main.pack()
161
162
163# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ окошко выбора меÑта отправлениÑ
164def add_from():
165 window = Tk()
166 window.resizable(False, False)
167 window.title("Откуда?")
168 listbox = Listbox(window, height=len(cities), width=40, selectmode=SINGLE)
169 for i in cities:
170 listbox.insert(END, i)
171 listbox.bind("<<ListboxSelect>>", travel_from)
172 listbox.pack()
173 window.mainloop()
174
175
176# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÑтанавливает перемнной id выбранного пункта отправлениÑ
177def travel_from(event):
178 global travelFrom
179 travelFrom = event.widget.curselection()[0]
180 global var_travel_from
181 var_travel_from.set(cities[travelFrom])
182
183
184# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÑтанавливает переменной id выбранного пункта назначениÑ
185def add_to():
186 window_travel = Tk()
187 window_travel.resizable(False, False)
188 window_travel.title("Куда?")
189 listbox2 = Listbox(window_travel, height=len(cities), width=40, selectmode=SINGLE)
190 for i in cities:
191 listbox2.insert(END, i)
192 listbox2.bind("<<ListboxSelect>>", travel_to)
193 listbox2.pack()
194 window_travel.mainloop()
195
196
197# Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ окошко выбора меÑта назначениÑ
198def travel_to(event):
199 global travelTo
200 travelTo = event.widget.curselection()[0]
201 global var_travel_to
202 var_travel_to.set(cities[travelTo])
203
204
205# Ñти переменные отвечают за id города в маÑÑиве городов. меÑто Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ прибытиÑ
206travelTo = -1
207travelFrom = -1
208
209# Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð² билетов нужном порÑдке. иÑпользуетÑÑ Ð² окне печати
210ticket_type_names = ["ВзроÑлый", "Льготный", "ДетÑкий"]
211# ÑпиÑок доÑтупных городов
212cities = ["Санкт-Петербург", "МоÑква", "Сочи", "Казань", "Ðижний новгород", "Воронеж", "ВладивоÑток", "Тюмень", "Самара"]
213
214# переменнаÑ, в которой хранитÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ файла Ñ Ð±Ð´
215location = 'data.db'
216# здеÑÑŒ хранитÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ таблицы в бд
217table_name = 'prof'
218
219# объект-Ñоединение, который дает возможноÑть взаимодейÑтвовать Ñ Ð±Ð´
220conn = sqlite3.connect(location)
221# курÑор - отправлÑет запроÑÑ‹ в бд
222c = conn.cursor()
223
224# Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ñоздание бд, еÑли её не ÑущеÑтвует
225sql = 'create table if not exists ' + table_name + ' (type INTEGER, passport INTEGER, name TEXT, gender TEXT, age INTEGER, place INTEGER, travel_from TEXT, travel_to TEXT, date TEXT, document TEXT)'
226c.execute(sql)
227
228# уÑтанавливаем начальное кол-во занÑтых меÑÑ‚ запроÑом, который возвращает общее кол-во купленных билетов
229place = c.execute("SELECT COUNT(*) FROM " + table_name).fetchone()[0]
230
231# Ñоздаем оÑновное окно
232root = Tk()
233root.resizable(False, False)
234root.title("Продажа билетов")
235root.geometry("640x480")
236
237# START - Строка покупки билета
238frame_main = Frame(root)
239frame_main.config(width=640, height=480)
240frame_main.pack()
241
242label_header = Label(frame_main, text="ПоиÑк билета по параметрам", bg="white")
243label_header.place(relx=0.18, rely=0.4)
244label_header.configure(font="Colibri, 25", fg="black")
245
246var_travel_from = StringVar()
247var_travel_from.set('-')
248label_from = Label(frame_main, textvariable=var_travel_from, bg="#FFFFFF")
249label_from.place(relx=0.4, rely=0.6)
250button_from = Button(frame_main, text="Откуда", command=add_from)
251button_from.place(relx=0.3, rely=0.6)
252
253var_travel_to = StringVar()
254var_travel_to.set('-')
255label_to = Label(frame_main, textvariable=var_travel_to, bg="#FFFFFF")
256label_to.place(relx=0.4, rely=0.7)
257button_to = Button(frame_main, text="Куда", command=add_to)
258button_to.place(relx=0.32, rely=0.7)
259
260label_date = Label(frame_main, text="Дата (дд:мм:гг)", bg="#FFFFFF")
261label_date.place(relx=0.6, rely=0.6)
262textbox_date = Entry(frame_main, width=20)
263textbox_date.place(relx=0.6, rely=0.65)
264
265button_search = Button(frame_main, text="Купить билет", command=switch_to_buy, width=86)
266button_search.place(relx=0.02, rely=0.85)
267# END - Строка покупки билета
268
269# START - Ðачальные координаты ÑмещениÑ
270y = 0.02
271dis_y = 0.06
272x = 0.02
273# END - Ðачальные координаты ÑмещениÑ
274
275# START - Покупка обычного билета
276frame_buy = Frame(root)
277frame_buy.config(width=640, height=480)
278
279check_type = IntVar()
280label_passport = [None] * 3
281label_name = [None] * 3
282radiobutton_man = [None] * 3
283radiobutton_woman = [None] * 3
284label_age = [None] * 3
285radiobutton_type = [None] * 3
286textbox_passport = [None] * 3
287textbox_name = [None] * 3
288check_gender = [None] * 3
289textbox_age = [None] * 3
290textbox_document = [None] * 3
291
292radiobutton_type_1 = Radiobutton(frame_buy, text="Обычный", value=0, variable=check_type)
293radiobutton_type_1.place(relx=x, rely=y)
294
295label_passport[0] = Label(frame_buy, text="Ðомер паÑпорта", bg="#FFFFFF")
296label_passport[0].place(relx=x, rely=y + dis_y)
297textbox_passport[0] = Entry(frame_buy, width=6)
298textbox_passport[0].place(relx=x + 0.2, rely=y + dis_y)
299
300label_name[0] = Label(frame_buy, text="ФИО", bg="#FFFFFF")
301label_name[0].place(relx=x, rely=y + dis_y * 2)
302textbox_name[0] = Entry(frame_buy, width=20)
303textbox_name[0].place(relx=x + 0.2, rely=y + dis_y * 2)
304
305check_gender[0] = IntVar()
306check_gender[0].set(0)
307radiobutton_man[0] = Radiobutton(frame_buy, text="Мужчина", value=0, variable=check_gender[0])
308radiobutton_man[0].place(relx=x + 0.5, rely=y + dis_y * 1.5)
309radiobutton_woman[0] = Radiobutton(frame_buy, text="Женщина", value=1, variable=check_gender[0])
310radiobutton_woman[0].place(relx=x + 0.5, rely=y + dis_y * 2.5)
311
312label_age[0] = Label(frame_buy, text="ВозраÑÑ‚", bg="#FFFFFF")
313label_age[0].place(relx=x, rely=y + dis_y * 3)
314textbox_age[0] = Entry(frame_buy, width=3)
315textbox_age[0].place(relx=x + 0.2, rely=y + dis_y * 3)
316# END - Покупка обычного билета
317
318# START - Окно покупки билета
319y = y + dis_y * 4 + 0.03
320
321# Покупка льготного билета
322radiobutton_type_2 = Radiobutton(frame_buy, text="Льготный", value=1, variable=check_type)
323radiobutton_type_2.place(relx=x, rely=y)
324
325label_passport[1] = Label(frame_buy, text="Ðомер паÑпорта", bg="#FFFFFF")
326label_passport[1].place(relx=x, rely=y + dis_y)
327textbox_passport[1] = Entry(frame_buy, width=6)
328textbox_passport[1].place(relx=x + 0.2, rely=y + dis_y)
329
330label_name[1] = Label(frame_buy, text="ФИО", bg="#FFFFFF")
331label_name[1].place(relx=x, rely=y + dis_y * 2)
332textbox_name[1] = Entry(frame_buy, width=20)
333textbox_name[1].place(relx=x + 0.2, rely=y + dis_y * 2)
334
335check_gender[1] = IntVar()
336check_gender[1].set(0)
337radiobutton_man[1] = Radiobutton(frame_buy, text="Мужчина", value=0, variable=check_gender[1])
338radiobutton_man[1].place(relx=x + 0.5, rely=y + dis_y * 1.5)
339radiobutton_woman[1] = Radiobutton(frame_buy, text="Женщина", value=1, variable=check_gender[1])
340radiobutton_woman[1].place(relx=x + 0.5, rely=y + dis_y * 2.5)
341
342label_age[1] = Label(frame_buy, text="ВозраÑÑ‚", bg="#FFFFFF")
343label_age[1].place(relx=x, rely=y + dis_y * 3)
344textbox_age[1] = Entry(frame_buy, width=3)
345textbox_age[1].place(relx=x + 0.2, rely=y + dis_y * 3)
346
347label_document = Label(frame_buy, text="Льготный документ", bg="#FFFFFF")
348label_document.place(relx=x, rely=y + dis_y * 4)
349textbox_document[1] = Entry(frame_buy, width=20)
350textbox_document[1].place(relx=x + 0.2, rely=y + dis_y * 4)
351# Конец покупки льготного билета
352
353y = y + dis_y * 5 + 0.03
354
355# Покупка детÑкого билета
356radiobutton_type[2] = Radiobutton(frame_buy, text="ДетÑкий", value=2, variable=check_type)
357radiobutton_type[2].place(relx=x, rely=y)
358
359label_passport[2] = Label(frame_buy, text="ПаÑпорт взроÑлого", bg="#FFFFFF")
360label_passport[2].place(relx=x, rely=y + dis_y)
361textbox_passport[2] = Entry(frame_buy, width=6)
362textbox_passport[2].place(relx=x + 0.2, rely=y + dis_y)
363
364label_name[2] = Label(frame_buy, text="ФИО", bg="#FFFFFF")
365label_name[2].place(relx=x, rely=y + dis_y * 2)
366textbox_name[2] = Entry(frame_buy, width=20)
367textbox_name[2].place(relx=x + 0.2, rely=y + dis_y * 2)
368
369check_gender[2] = IntVar()
370check_gender[2].set(0)
371radiobutton_man[2] = Radiobutton(frame_buy, text="Мальчик", value=0, variable=check_gender[2])
372radiobutton_man[2].place(relx=x + 0.5, rely=y + dis_y * 1.5)
373radiobutton_woman[2] = Radiobutton(frame_buy, text="Девочка", value=1, variable=check_gender[2])
374radiobutton_woman[2].place(relx=x + 0.5, rely=y + dis_y * 2.5)
375
376label_age[2] = Label(frame_buy, text="ВозраÑÑ‚", bg="#FFFFFF")
377label_age[2].place(relx=x, rely=y + dis_y * 3)
378textbox_age[2] = Entry(frame_buy, width=3)
379textbox_age[2].place(relx=x + 0.2, rely=y + dis_y * 3)
380
381label_child_document = Label(frame_buy, text="Св. о рождении", bg="#FFFFFF")
382label_child_document.place(relx=x, rely=y + dis_y * 4)
383textbox_document[2] = Entry(frame_buy, width=6)
384textbox_document[2].place(relx=x + 0.2, rely=y + dis_y * 4)
385# Конец покупки детÑкого билета
386
387button_append = Button(frame_buy, text="Купить", command=append, width=86)
388button_append.place(relx=x, rely=y + dis_y * 5)
389# END - Окно покупки билета
390
391# START - Окно купленного билета
392frame_bought = Frame(root)
393frame_bought.config(width=640, height=480)
394
395label_bought = Label(frame_bought, text="Вы приобрели билет!", bg="white")
396label_bought.place(relx=0.25, rely=0.2)
397label_bought.configure(font="Colibri, 25", fg="black")
398
399var_bought_name = StringVar()
400var_bought_name.set('-')
401label_bought_name = Label(frame_bought, textvariable=var_bought_name, bg="#FFFFFF")
402label_bought_name.place(relx=0.1, rely=0.4)
403
404var_bought_ticket_id = StringVar()
405var_bought_ticket_id.set('-')
406label_bought_ticket_id = Label(frame_bought, textvariable=var_bought_ticket_id, bg="#FFFFFF")
407label_bought_ticket_id.place(relx=0.1, rely=0.48)
408
409var_bought_travel = StringVar()
410var_bought_travel.set('-')
411label_bought_travel = Label(frame_bought, textvariable=var_bought_travel, bg="#FFFFFF")
412label_bought_travel.place(relx=0.1, rely=0.56)
413
414button_bought_print = Button(frame_bought, text="Печать билета", command=print_ticket)
415button_bought_print.place(relx=0.1, rely=0.64)
416
417button_bought_main = Button(frame_bought, text="Выбор другого поезда", command=switch_to_main)
418button_bought_main.place(relx=0.1, rely=0.72)
419
420button_back_to_buy = Button(frame_bought, text="Купить ещё один билет на Ñтот поезд", command=switch_to_buy, width=86)
421button_back_to_buy.place(relx=0.02, rely=0.9)
422# END - Окно купленного билета
423
424# START - Окно печати билета
425frame_print = Frame(root)
426frame_print.config(width=640, height=480)
427
428canvas = Canvas(frame_print, width=640, height=480)
429canvas.create_rectangle(10, 10, 620, 400, outline='black', fill='white', width=2)
430canvas.place(relx=0, rely=0)
431
432font = "Colibri, 12"
433
434var_print_number = StringVar()
435label_print_number = Label(frame_print, textvariable=var_print_number, bg='white')
436label_print_number.place(relx=0.1, rely=0.1)
437label_print_number.configure(font="Colibri, 16", fg="black")
438
439var_print_type = StringVar()
440label_print_type = Label(frame_print, textvariable=var_print_type, bg='white')
441label_print_type.place(relx=0.7, rely=0.1)
442label_print_type.configure(font=font, fg="black")
443
444var_print_name = StringVar()
445label_print_name = Label(frame_print, textvariable=var_print_name, bg='white')
446label_print_name.place(relx=0.1, rely=0.18)
447label_print_name.configure(font=font, fg="black")
448
449var_print_age = StringVar()
450label_print_age = Label(frame_print, textvariable=var_print_age, bg='white')
451label_print_age.place(relx=0.1, rely=0.26)
452label_print_age.configure(font=font, fg="black")
453
454var_print_passport = StringVar()
455label_print_passport = Label(frame_print, textvariable=var_print_passport, bg='white')
456label_print_passport.place(relx=0.1, rely=0.34)
457label_print_passport.configure(font=font, fg="black")
458
459var_print_document = StringVar()
460label_print_document = Label(frame_print, textvariable=var_print_document, bg='white')
461label_print_document.place(relx=0.5, rely=0.34)
462label_print_document.configure(font=font, fg="black")
463
464label_print_from = Label(frame_print, text="Откуда:", bg='white')
465label_print_from.place(relx=0.1, rely=0.42)
466label_print_from.configure(font=font, fg="black")
467
468var_print_from = StringVar()
469label_print_var_from = Label(frame_print, textvariable=var_print_from, bg='white')
470label_print_var_from.place(relx=0.6, rely=0.42)
471label_print_var_from.configure(font=font, fg="black")
472
473label_print_to = Label(frame_print, text="Куда:", bg='white')
474label_print_to.place(relx=0.1, rely=0.5)
475label_print_to.configure(font=font, fg="black")
476
477var_print_to = StringVar()
478label_print_var_to = Label(frame_print, textvariable=var_print_to, bg='white')
479label_print_var_to.place(relx=0.6, rely=0.5)
480label_print_var_to.configure(font=font, fg="black")
481
482label_print_date = Label(frame_print, text="Дата отправлениÑ:", bg='white')
483label_print_date.place(relx=0.1, rely=0.58)
484label_print_date.configure(font=font, fg="black")
485
486var_print_date = StringVar()
487label_print_var_date = Label(frame_print, textvariable=var_print_date, bg='white')
488label_print_var_date.place(relx=0.6, rely=0.58)
489label_print_var_date.configure(font=font, fg="black")
490
491var_print_place = StringVar()
492label_print_place = Label(frame_print, textvariable=var_print_place, bg='white')
493label_print_place.place(relx=0.1, rely=0.66)
494label_print_place.configure(font=font, fg="black")
495
496var_print_carriage = StringVar()
497label_print_carriage = Label(frame_print, textvariable=var_print_carriage, bg='white')
498label_print_carriage.place(relx=0.5, rely=0.66)
499label_print_carriage.configure(font=font, fg="black")
500
501button_print_back = Button(frame_print, text="Ðазад", command=switch_to_bought)
502button_print_back.place(relx=0.9, rely=0.9)
503# END - Окно печати билета
504
505root.mainloop()
506conn.close()