Скачиваний:
0
Добавлен:
21.01.2024
Размер:
8.98 Кб
Скачать
from tkinter import *
 
import csv

import tkinter.ttk as ttk
from tkinter.font import Font
from tkinter.ttk import Style, Treeview


from constant_ip_calc  import *

class Database_window:

	def search(self):
		pass
	def table_users(self):
		self.user_list = Frame(self.root)
		self.user_list.place(x = 150, y = 200)
		self.heads = ['Номер пользователя','Номер записи','Время']
		self.lst = [ ("0001" , 1 , '11.12.2021')]
		self.table = ttk.Treeview(self.user_list,  height=15, show = 'headings')
		
		self.table['columns'] = self.heads
		self.table['displaycolumns'] = ['Номер пользователя','Номер записи','Время']

		for header in self.heads:
			self.table.heading(header, text = header, anchor = 'center')
			self.table.column(header, width= 300, minwidth = 300, anchor = 'center')

		for row in self.lst:
			self.table.insert('','end', values = row)
	
		self.scroll_pane = ttk.Scrollbar(self.user_list, command = self.table.yview)
		self.table.configure(yscrollcommand = self.scroll_pane.set)
		self.scroll_pane.pack(side = RIGHT, fill = Y)

		self.table.pack(expand = YES, fill = BOTH)

		self.btn_table_user.configure(bg =color_new_btn)
		self.btn_table_ip_calc.configure(bg = color_btn)
		self.btn_table_mask.configure(bg = color_btn)

	

	def table_ip_calc(self):
		self.ip_calc_list = Frame(self.root)
		self.ip_calc_list.place(x = 150, y = 200)
		self.heads = ['Номер записи','IP-адрес','Маска подсети','Класс сети', 'Перевод в двоичную систему', 'Перевод в шестнадцатеричную систему']
		self.lst = [ (1,"255.255.255.255" , 30 , 'A','10000000.10000000.10000000.10000000',":cccc:dddd")]
		self.table = ttk.Treeview(self.ip_calc_list,  height=15, show = 'headings')
		
		self.table['columns'] = self.heads
		self.table['displaycolumns'] = ['Номер записи','IP-адрес','Маска подсети','Класс сети', 'Перевод в двоичную систему', 'Перевод в шестнадцатеричную систему']
		n = 0
		wid = 100	
		for header in self.heads:
			self.table.heading(header, text = header, anchor = 'center')
			self.table.column(header, width= wid, minwidth = 100, anchor = 'center')
			if n == 3:
				wid = 250
			n = n + 1
		for row in self.lst:
			self.table.insert('','end', values = row)
	
		self.scroll_pane = ttk.Scrollbar(self.ip_calc_list, command = self.table.yview)
		self.table.configure(yscrollcommand = self.scroll_pane.set)
		self.scroll_pane.pack(side = RIGHT, fill = Y)

		self.user_list.destroy()

		self.table.pack(expand = YES, fill = BOTH)

		self.btn_table_user.configure(bg = color_btn)
		self.btn_table_ip_calc.configure(bg = color_new_btn)
		self.btn_table_mask.configure(bg = color_btn)

		

	def table_maska(self):
		self.maska_list = Frame(self.root)
		self.maska_list.place(x = 30, y = 200)
		self.heads = ['Номер записи','Маска подсети','Адрес сети','Адрес узла', 'Количество узлов',
		'Широковещательный адрес','Широковещательный узел','Доступные адреса','IP первый/последний','Адреса подсети']

		font=Font(family="Arial", size=5)
		font.metrics()
		style=Style()
		style.configure('Calendar.Treeview', font=font, rowheight = 100)   
		self.table = ttk.Treeview(self.maska_list, style = 	'Calendar.Treeview',  height=3, show = 'headings')

		self.lst = [ (1 , '192.168.255.255' , '192.168.255.255', 120 ,'192.168.255.255','192.168.255.255' , 16 ,'192.168.255.255\n192.168.255.255' ,
		 '192.168.255.2555\n192.168.255.255\n192.168.255.255'),
		(28 , '192.168.255.255' , '192.168.255.255', 120 ,'192.168.255.255','192.168.255.255' , 16 ,'192.168.255.255\n192.168.255.255' ,
		 '192.168.255.2555\n192.168.255.255\n192.168.255.255'),(1 , '192.168.255.255' , '192.168.255.255', 120 ,'192.168.255.255','192.168.255.255' , 16 ,'192.168.255.255\n192.168.255.255' ,
		 '192.168.255.2555\n192.168.255.255\n192.168.255.255'),(1 , '192.168.255.255' , '192.168.255.255', 120 ,'192.168.255.255','192.168.255.255' , 16 ,'192.168.255.255\n192.168.255.255' ,
		 '192.168.255.2555\n192.168.255.255\n192.168.255.255')]

		self.table['columns'] = self.heads
		self.table['displaycolumns'] = ['Номер записи','Маска подсети','Адрес сети','Адрес узла', 'Количество узлов',
		'Широковещательный адрес','Широковещательный узел','Доступные адреса','IP первый/последний','Адреса подсети']
		n = 0
		wid = 90	
		for header in self.heads:
			if (n == 3) or (n == 6):
				wid = 110
			if (n == 4) or (n == 5):
				wid = 165
			if (n == 7):
				wid = 120
			if (n == 8):
				wid = 100
			self.table.heading(header, text = header, anchor = 'center')
			self.table.column(header,width = wid , anchor = 'center')
			n = n + 1
		for row in self.lst:
			self.table.insert('','end', values = row)
	
		self.scroll_pane = ttk.Scrollbar(self.maska_list, command = self.table.yview)
		self.table.configure(yscrollcommand = self.scroll_pane.set)
		self.scroll_pane.pack(side = RIGHT, fill = Y)

		self.btn_table_user.configure(bg = color_btn)
		self.btn_table_ip_calc.configure(bg = color_btn)
		self.btn_table_mask.configure(bg = color_new_btn)	


		self.table.pack(expand = YES, fill = BOTH)
		
	def chek_user(self):
		global chek_table_user 
		global chek_table_ip 
		global chek_table_mask 
		chek_table_user = 1
		if chek_table_ip == 1:
			self.ip_calc_list.destroy()
			chek_table_ip = 0
		if chek_table_mask == 1:
			self.maska_list.destroy()
			chek_table_mask = 0

	def chek_ip(self):
		global chek_table_user 
		global chek_table_ip 
		global chek_table_mask 
		chek_table_ip = 1
		if chek_table_user == 1:
			chek_table_user = 0
			self.user_list.destroy()
		else:
			pass
		if chek_table_mask == 1:
			chek_table_mask = 0
			self.maska_list.destroy()
			

	def chek_maska(self):
		global chek_table_user 
		global chek_table_ip 
		global chek_table_mask 
		chek_table_mask = 1
		if chek_table_ip == 1:
			self.ip_calc_list.destroy()
			chek_table_ip = 0
		if chek_table_mask == 1:
			self.user_list.destroy()
			chek_table_user = 0

	def start_table_user(self):
		self.table_users()
		self.chek_user()	

	def start_table_ip(self):
		self.table_ip_calc()
		self.chek_ip()	

	def start_table_maska(self):
		self.table_maska()
		self.chek_maska()

	def __init__(self, parent, title="База данных", resizable=(False, False), icon = None):
		self.root = Toplevel(parent)
		self.root.title(title)
		self.root.geometry("1200x600+200+200")
		self.root.config(bg = color)
		self.file_frame_table = LabelFrame(self.root, text = 'Таблицы')
		self.file_frame_table.place(height = 150, width = 150, x = 380, y = 30 )

		self.file_frame_search = LabelFrame(self.root, text = 'Поиск')
		self.file_frame_search.place(height = 150, width = 300, x = 20 , y = 30 )

		self.file_frame_search = LabelFrame(self.root, text = 'База данных')
		self.file_frame_search.place(height = 370, width = 1175, x = 20 , y = 180 )

		self.label_ip = Label(self.root, text = 'База данных', bg = color, font = font_label)
		self.label_ip.place(x = 450, y = 8)

		self.entry_search = Entry(self.root)
		self.entry_search.place(x= 60, y = 55, width = 150)

		self.btn_table_user = Button(self.root, text = 'Операции' ,bg = color_btn, command	= self.start_table_user)
		self.btn_table_user.place(x  = 400, y = 50)

		self.btn_table_ip_calc = Button(self.root,  text = 'IP-калькулятор',bg = color_btn, command = self.start_table_ip)
		self.btn_table_ip_calc.place(x= 400 , y = 90)

		self.btn_table_mask = Button(self.root, text = 'Маска' , bg = color_btn, command = self.start_table_maska)
		self.btn_table_mask.place(x = 400, y = 130)


		self.btn_search = Button(self.root, text = 'Поиск',activebackground = color_new_btn, bg = color_btn,)
		self.btn_search.place(x = 220, y = 50)

			
		self.btn_destroy = Button(self.root, text = 'Вернуться к окну IP-калькулятор',bg = color_btn,activebackground = color_new_btn, command = self.destroy_window_database)
		self.btn_destroy.place(x = 990, y = 50)

		self.table_users()

		self.grab_focus()
		if icon:
			self.root.iconbitmap(icon)

	def grab_focus(self):
		self.root.grab_set()
		self.root.focus_set()
		self.root.wait_window()

	def destroy_window_database(self):
		self.root.destroy()
		global chek_table_user
		global chek_table_ip
		global chek_table_mask
		chek_table_user = 0
		chek_table_ip = 0
		chek_table_mask = 0

	
Соседние файлы в папке view