Advertisement
mirovlad

InputCompany get_data

Jul 29th, 2022
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.14 KB | None | 0 0
  1. from tkinter import *
  2.  
  3.  
  4. class InputCompany(Toplevel):
  5.  
  6.     def __init__(self):
  7.         super().__init__()
  8.         self.title('Данни за предприятието')
  9.         self.geometry('700x500+600+200')
  10.         self.attributes('-topmost', 'true')
  11.         self.hw = 500
  12.         self.next_tb_y = 420
  13.         self.dds = StringVar()
  14.         self.test = True # ВЕДНЪЖ ЗАПИСАНО ЕИК НОМЕРА НЕ ТРЯБВА ДА МОЖЕ ДА СЕ СМЕНЯ !!!
  15.         #self.open_comp()
  16.         self.__refs = {}  # Свойство-речник в който да трупаме референции към уиджитите
  17.  
  18.     def open_comp(self):
  19.         # Create Label
  20.         name_l = self.label_n(20, 20, 20, 'Наименование')
  21.         sit_l = self.label_n(20, 60, 20, 'Седалище')
  22.         addr_l = self.label_n(20, 100, 20, 'Адрес на управление')
  23.         e_num_l = self.label_n(20, 140, 20, 'ЕИК (Булстат)')
  24.         men_l = self.label_n(20, 180, 20, 'Ръководител')
  25.         act_num_l = self.label_n(20, 220, 20, 'Код на дейността')
  26.         dds_l = self.label_n(20, 260, 20, 'Рег. ЗДДС')
  27.         phone1_l = self.label_n(20, 300, 20, 'Офис тел:')
  28.         phone2_l = self.label_n(20, 340, 20, 'Счетоводство тел:')
  29.         mail_l = self.label_n(20, 380, 20, 'Счетоводство e-mail:')
  30.         act_place_l = self.label_n(20, 420, 20, 'Търговски обект:')
  31.  
  32.         #name_e = self.entry_n(200, 20, 40) # Оставено така, ентрито name_e би се "загубило" като приключи open_comp()
  33.         # Затова го запазваме във свойство -- за да можем след това да го достъпваме от други функции като get_data()
  34.         self.__refs["name_e"] = self.entry_n(200, 20, 40)
  35.  
  36.         sit_e = self.entry_n(200, 60, 40)
  37.  
  38.         #addr_e = self.entry_n(200, 100, 40)  # Оставено така, ентрито name_e би се "загубило" като приключи open_comp()
  39.         # Затова го запазваме във свойство -- за да можем след това да го достъпваме от други функции като get_data()
  40.         self.__refs["addr_e"] = self.entry_n(200, 100, 40)
  41.  
  42.         self.e_num_e = self.entry_n(200, 140, 40)
  43.         self.men_e = self.entry_n(200, 180, 40)
  44.         act_num_e = self.entry_n(200, 220, 40)
  45.         self.dds_e = self.entry_n(200, 260, 40)
  46.         phone1_e = self.entry_n(200, 300, 40)
  47.         phone2_e = self.entry_n(200, 340, 40)
  48.         mail_e = self.entry_n(200, 380, 40)
  49.         #act_place_e = self.entry_n(200, 420, 40)
  50.         # Create Check_box
  51.         dds_ch = self.check_b(150, 260, '')
  52.         # Create Text box
  53.         txt_b = self.text_n(200, 420, 2, 35, ('Times', 10, 'italic'))
  54.         # Create Button
  55.         btn_plus = self.button_n(150, 420, '+', 'red', ('Times', 10, 'bold'), 1, 3, lambda: self.resize_win())
  56.         btn_save = self.button_n(500, 18, ' ЗАПИШИ ', 'blue', ('Bookman Old Style Bold', 8), 2, 10, None)  # ('Bookman Old Style Bold', 8), fg='blue', height=2, width=10
  57.         btn_change = self.button_n(500, 78, ' ПРОМЯНА ', 'red', ('Bookman Old Style Bold', 8), 2, 10, None)
  58.         btn_exit = self.button_n(500, 318, 'OK', 'green', ('Bookman Old Style Bold', 8), 2, 10, self.destroy)
  59.         btn_help = self.button_n(500, 378, 'Помощ', 'black', ('Bookman Old Style Bold', 8), 1, 10, None)  # h=1 , w=10
  60.  
  61.  
  62.     def resize_win(self):
  63.         self.hw += 60
  64.         self.next_tb_y += 50
  65.         self.wm_geometry(f'700x{self.hw}')
  66.         # Create Text box
  67.         txt_b = self.text_n(200, self.next_tb_y, 2, 35, ('Times', 10, 'italic'))
  68.  
  69.  
  70.     def label_n(self, x, y, w, t):
  71.         bord_color = Frame(self, width=w, background='red')
  72.         bord_color.place(x=x, y=y)
  73.         lab = Label(bord_color, text=t, font=('Times', 10, 'italic'))
  74.         lab.pack(padx=0, pady=(0, 1))
  75.  
  76.     def entry_n(self, x, y, w):
  77.         ent = Entry(self, bd=4, width=w)
  78.         ent.place(x=x, y=y)
  79.         return ent
  80.  
  81.     def check_b(self, x, y, t):
  82.         __cb = IntVar()
  83.         check = Checkbutton(self, text=t, onvalue=1, offvalue=0, variable=__cb, command=lambda: self.check_x(__cb))
  84.         check.place(x=x, y=y)
  85.  
  86.     def check_x(self, __cb):
  87.         dds = StringVar()
  88.         eik = self.e_num_e.get()
  89.         eik1 = eik[0:3]
  90.         eik2 = eik[3:6]
  91.         eik3 = eik[6:9]
  92.         eik = f'{eik1}' + ' ' + f'{eik2}' + ' ' + f'{eik3}'
  93.         eik_end = self.e_num_e.get()
  94.         self.e_num_e.delete(0, END)
  95.         self.e_num_e.insert(0, f'{eik}')
  96.         self.e_num_e.config(state=DISABLED)
  97.         if __cb.get() == 0:
  98.             self.dds_e.delete(0, END)
  99.             self.dds_e.insert(0, 'БЕЗ РЕГИСТРАЦИЯ ПО ЗДДС')
  100.         elif __cb.get() == 1:
  101.             self.dds_e.delete(0, END)
  102.             if self.test:
  103.                 self.dds_e.insert(0, f'BG{eik}')
  104.                 self.test = False
  105.             else:
  106.                 self.dds_e.insert(0, f'BG{eik_end}')
  107.  
  108.     def text_n(self, x, y, h, w, f):
  109.         txt = Text(self, height=h, width=w, font=f, relief='sunken', borderwidth=4)
  110.         txt.place(x=x, y=y)
  111.         return txt
  112.  
  113.     def button_n(geo, x, y, t, f, fnt, h, w, comm):
  114.         btn = Button(geo, text=t, fg=f, command=comm, font=fnt, height=h, width=w)
  115.         btn.place(x=x, y=y)
  116.  
  117.     # Събира данните от всички полета в речник
  118.     def get_data(self):
  119.         data = {}
  120.         data["name"] = self.__refs["name_e"].get()
  121.         data["addr"] = self.__refs["addr_e"].get()
  122.         data["dds"] = self.dds.get()
  123.         return data
  124.  
  125.  
  126. if __name__ == '__main__':
  127.  
  128.     root = Tk()
  129.     root.geometry('100x100+300+200')
  130.     root.attributes('-topmost', 'true')     # Винаги да е отгоре
  131.     ext = Button(root, text='Exit', command=root.destroy)
  132.     ext.pack(side='bottom')
  133.  
  134.     inp_win = InputCompany()
  135.     inp_win.open_comp()
  136.  
  137.     inp_win.mainloop()
  138.  
  139.  
  140.     #cb = IntVar()
  141.     #open_comp(root)
  142.  
  143.     root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement