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

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

#import mysql.connector
import textwrap


from constant_ip_calc  import *

class Database_window:
	def __init__(self):
		super().__init__()
		self.initUI()

	def table_users(self):
		self.database()
		self.number_employeer = "SELECT ID_users, Entry_number, Time FROM users"
		self.mycursor.execute(self.number_employeer)
		self.result = self.mycursor.fetchall()
		self.user_list = Frame(self.root)
		self.user_list.place(x = 150, y = 200)
		self.lst1 = []
		self.heads = ['Номер пользователя','Номер записи','Время']
		for i in range(len(self.result) - 1):
			self.lst1 =  self.result
		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.lst1:
			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.database()
		self.record = "SELECT Entry_number_employeer, IP_address, Subnet_Mask, Class_network, Converting_IP_Address_to_Binary_system, Converting_IP_Address_to_Decimal_system FROM ip_adress_table"
		self.mycursor.execute(self.record)
		self.result = self.mycursor.fetchall()
		self.ip_calc_list = Frame(self.root)
		self.ip_calc_list.place(x = 150, y = 200)
		self.lst2 = []
		self.heads = ['Номер записи','IP-адрес','Маска подсети','Класс сети', 'Перевод в двоичную систему', 'Перевод в шестнадцатеричную систему']
		for i in range(len(self.result) - 1):
			self.lst2 = self.result

		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 == 1 :
				wid = 200
			if n == 2 :
				wid = 70
			if  (n == 3) or (n == 4) :
				wid = 270
			n = n + 1
		for row in self.lst2:
			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.record = "SELECT Entry_number_for_mask, Mask, Network_address, Node_address, Number_of_node, Broadcast_address, Broadcast_node_addres, Available_address, IP_hostmin_hostmax, Subnet FROM mask_table"
		self.mycursor.execute(self.record)
		self.result = self.mycursor.fetchall()
		self.maska_list = Frame(self.root)
		self.maska_list.place(x = 30, y = 200)
		self.lst3 = []
		self.heads = ['Номер записи','Маска подсети','Адрес сети','Адрес узла', 'Количество узлов',
		'Широковещательный адрес','Широковещательный узел','Доступные адреса','IP первый/последний','Адреса подсети']


		self.table = ttk.Treeview(self.maska_list, style = 	'Calendar.Treeview',  height=15, show = 'headings')
		for i in range(len(self.result) - 1):
			self.lst3 = self.result
		
		self.table['columns'] = self.heads
		self.table['displaycolumns'] = ['Номер записи','Маска подсети','Адрес сети','Адрес узла', 'Количество узлов',
		'Широковещательный адрес','Широковещательный узел','Доступные адреса','IP первый/последний','Адреса подсети']
		n = 0
		wid = 90	
		for header in self.heads:
			if n == 1:
				wid = 107
			if n == 3:
				wid = 120
			if n == 6:
				wid = 160
			if n == 4:
				wid = 90
			if 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.lst3:
			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("1240x600+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 = 50, y = 30 )
		
		try:
			self.photo1 = PhotoImage(file='ip_bd.png')
			self.root.iconphoto(False, self.photo1)
		except Exception:
			print('Нет фотографии для База данных')	
		self.file_frame_search = LabelFrame(self.root, text = 'База данных')
		self.file_frame_search.place(height = 370, width = 1190, 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.btn_table_user = Button(self.root, text = 'Операции' ,bg = color_btn,font = font_btn, command	= self.start_table_user)
		self.btn_table_user.place(x  = 60, y = 50)

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

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

			
		self.btn_destroy = Button(self.root, text = 'Вернуться к окну IP-калькулятор',bg = color_btn,font = font_btn,activebackground = color_new_btn, command = self.destroy_window_database)
		self.btn_destroy.place(x = 900, 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


	def database(self):
		self.mydb = mysql.connector.connect(
			host='78.24.217.186',
			port=2417,
			database='data_Calculate',  
			user='businessapp',
			password='zjekgf7tvj6go57ky3zv4w645wf1mipya9'
			)

		self.mycursor = self.mydb.cursor()

		

"""
	
Соседние файлы в папке IP-калькулятор (python)