Initial commit

This commit is contained in:
2024-03-09 17:44:57 +02:00
parent 639c1e04bc
commit 146a7c89df
25 changed files with 1992 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
def initial_calculations(input_sets, u_set):
results = []
results.append(input_sets[1] & (u_set - input_sets[2]))
results.append((u_set - input_sets[0]) & input_sets[2])
results.append(input_sets[0] & input_sets[1])
results.append(results[1] | results[2])
results.append(results[0] | results[3])
results.append((u_set - input_sets[2]) | results[4])
results.append(input_sets[1] | results[5])
results.append((u_set - input_sets[0]) | results[6])
return results
+251
View File
@@ -0,0 +1,251 @@
import window_1, window_2, window_3, window_4, window_5
from tkinter import *
from tkinter import messagebox
import random
import initial_calculations, simplified_calculations, z_calculations
import shelve
class Screen_Handler():
def get_universal_set(self):
u_boundaries = [window_1.lowest_entry.get(), window_1.highest_entry.get()]
if (not all([item.strip("-").isdigit() for item in u_boundaries])):
messagebox.showerror("Помилка", "Межі універсальної множини мають бути цілими числами.")
return 0
u_boundaries = list(map(int, u_boundaries))
if (u_boundaries[0] >= u_boundaries[1]):
messagebox.showerror("Помилка", "Нижня межа універсальної множини має бути введена раніше першої.")
else:
self.u_boundaries = u_boundaries
self.set_universal_set()
self.universal_set = set(range(u_boundaries[0], u_boundaries[1]+1))
def get_manual_sets(self):
if (not self.check_universal()):
return 0
set_getters_list = [i.get for i in window_1.manual_entries]
sets_abc = [i() for i in set_getters_list]
sets_abc = [set(i().split()) for i in set_getters_list]
if (not all([all([item.strip("-").isdigit() for item in arr]) for arr in sets_abc])):
messagebox.showerror("Помилка", "Множини мають складатися з чисел або бути пустими.")
return 0
sets_abc = [set(map(int, curr_set)) for curr_set in sets_abc]
if (all(map(self.check_manual_sets, sets_abc))):
list(map(self.set_abc_set, sets_abc, window_1.set_labels))
list(map(self.set_abc_set, sets_abc, window_2.set_labels))
list(map(self.set_abc_set, sets_abc, window_3.set_labels))
list(map(self.set_abc_set, sets_abc, window_4.set_labels))
self.sets_abc = sets_abc
def get_generated_sets(self):
if (not self.check_universal()):
return 0
cardinalities = [item.get() for item in window_1.cardinality_entries]
if (not all([item.isdigit() for item in cardinalities])):
messagebox.showerror("Помилка", "Потужності мають бути числами.")
return 0
cardinalities = list(map(int, cardinalities))
if (max(cardinalities) > len(self.universal_set)):
messagebox.showerror("Помилка", "Потужності не можуть перевищувати кількість елементів в універсальній множині.")
return 0
sets_abc = [set(random.sample(range(min(self.universal_set), max(self.universal_set)+1), i)) for i in cardinalities]
list(map(self.set_abc_set, sets_abc, window_1.set_labels))
list(map(self.set_abc_set, sets_abc, window_2.set_labels))
list(map(self.set_abc_set, sets_abc, window_3.set_labels))
list(map(self.set_abc_set, sets_abc, window_4.set_labels))
self.sets_abc = sets_abc
def check_manual_sets(self, curr_set):
if curr_set:
if (max(curr_set) > max(self.universal_set) or min(curr_set) < min(self.universal_set)):
messagebox.showerror("Помилка", "Вихід за межі універсальної множини.")
return False
else:
return True
else:
return True
def initial_calculation_sets(self):
results = initial_calculations.initial_calculations(self.sets_abc, self.universal_set)
result_labels = window_2.calculation_result_labels
for i in range(len(results)):
results_text = set(map(str, results[i]))
results_text = f"{{ {'; '.join(results_text)} }}"
result_labels[i].configure(text=results_text)
window_2.elements_D_label.configure(text=results_text)
self.initial_D = results[-1]
def simple_calculation_sets(self):
results = simplified_calculations.simplified_calculations(self.sets_abc, self.universal_set)
result_labels = window_3.calculation_result_labels
for i in range(len(results)):
results_text = set(map(str, results[i]))
results_text = f"{{ {'; '.join(results_text)} }}"
result_labels[i].configure(text=results_text)
window_3.elements_D_label.configure(text=results_text)
self.simple_D = results[-1]
def z_calculations(self):
custom_results = z_calculations.z_calculations(self.sets_abc, self.universal_set)
result_labels = window_4.step_results
for i in range(len(custom_results)):
results_text = set(map(str, custom_results[i]))
results_text = f"{{ {'; '.join(results_text)} }}"
result_labels[i].configure(text=results_text)
window_4.elements_Z_label.configure(text = results_text)
self.custom_Z = custom_results[-1]
self.default_Z = z_calculations.z_calculations_in(self.sets_abc, self.universal_set)
def set_universal_set(self):
lower_boundary, upper_boundary = map(str, self.u_boundaries)
universal_text = f"{{ {lower_boundary}; ...; {upper_boundary} }}"
window_1.elements_U_label.configure(text = universal_text)
def set_abc_set(self, curr_set, curr_label):
curr_set = set(map(str, curr_set))
curr_text = f"{{ {'; '.join(curr_set)} }}"
curr_label.configure(text = curr_text)
def check_universal(self):
if (not hasattr(self, "universal_set")):
messagebox.showerror("Помилка", "Універсальна множина не задана.")
return False
else:
return True
def save_initial_D(self):
if (not hasattr(self, "initial_D")):
messagebox.showerror("Помилка", "Множина D не знайдена.")
return 0
with shelve.open("save.db") as sh:
sh["initial_D"] = self.initial_D
def save_simple_D(self):
if (not hasattr(self, "simple_D")):
messagebox.showerror("Помилка", "Множина D не знайдена.")
return 0
with shelve.open("save.db") as sh:
sh["simple_D"] = self.simple_D
def save_Z(self):
if (not (hasattr(self, "custom_Z") or hasattr(self, "default_Z"))):
messagebox.showerror("Помилка", "Множина Z не знайдена.")
return 0
with shelve.open("save.db") as sh:
sh["custom_Z"] = self.custom_Z
sh["default_Z"] = self.default_Z
def read_initial_D(self):
with shelve.open("save.db") as sh:
if ("initial_D" in sh.keys()):
initial_D = set(map(str, sh["initial_D"]))
initial_D = f"{{ {'; '.join(initial_D)} }}"
window_5.initial_D_elements.configure(text=initial_D)
else:
messagebox.showerror("Помилка", "Множина D не збережена.")
def read_simple_D(self):
with shelve.open("save.db") as sh:
if ("simple_D" in sh.keys()):
simple_D = set(map(str, sh["simple_D"]))
simple_D = f"{{ {'; '.join(simple_D)} }}"
window_5.simplified_D_elements.configure(text=simple_D)
else:
messagebox.showerror("Помилка", "Множина D не збережена.")
def read_default_Z(self):
with shelve.open("save.db") as sh:
if ("default_Z" in sh.keys()):
default_Z = set(map(str, sh["default_Z"]))
default_Z = f"{{ {'; '.join(default_Z)} }}"
window_5.python_Z_elements.configure(text=default_Z)
else:
messagebox.showerror("Помилка", "Множина Z не збережена.")
def read_custom_Z(self):
with shelve.open("save.db") as sh:
if ("custom_Z" in sh.keys()):
custom_Z = set(map(str, sh["custom_Z"]))
custom_Z = f"{{ {'; '.join(custom_Z)} }}"
window_5.custom_Z_elements.configure(text=custom_Z)
else:
messagebox.showerror("Помилка", "Множина Z не збережена.")
def compare_D(self):
with shelve.open("save.db") as sh:
if (sh["initial_D"] == sh["simple_D"]):
messagebox.showinfo("Порівняння D", "Множини D збігаються.")
else:
messagebox.showinfo("Порівняння D", "Множини D не збігаються.")
def compare_Z(self):
with shelve.open("save.db") as sh:
if (sh["default_Z"] == sh["custom_Z"]):
messagebox.showinfo("Порівняння Z", "Множини Z збігаються")
else:
messagebox.showinfo("Порівняння Z", "Множини Z не збігаються.")
def clear_saves(self):
sh = shelve.open("save.db", flag="n")
sh.close()
def configure_buttons(self):
window_1.set_U_button.configure(command=self.get_universal_set)
window_1.set_manual_button.configure(command=self.get_manual_sets)
window_1.set_generation_button.configure(command=self.get_generated_sets)
window_2.start_calculations_button.configure(command=self.initial_calculation_sets)
window_2.save_D_button.configure(command=self.save_initial_D)
window_3.start_calculations_button.configure(command=self.simple_calculation_sets)
window_3.save_D_button.configure(command=self.save_simple_D)
window_4.start_calculations_button.configure(command=self.z_calculations)
window_4.save_Z_button.configure(command=self.save_Z)
window_5.clear_save_button.configure(command=self.clear_saves)
window_5.read_initial_D_button.configure(command=self.read_initial_D)
window_5.read_simplified_D_button.configure(command=self.read_simple_D)
window_5.read_default_Z_button.configure(command=self.read_default_Z)
window_5.read_custom_Z_button.configure(command=self.read_custom_Z)
window_5.compare_D_button.configure(command=self.compare_D)
window_5.compare_Z_button.configure(command=self.compare_Z)
screens = Screen_Handler()
screens.configure_buttons()
window_1.root.mainloop()
BIN
View File
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
def simplified_calculations(input_sets, u_set):
results = []
results.append(u_set - input_sets[0])
results.append(results[0] | input_sets[1])
results.append(results[1] | (u_set - input_sets[2]))
return results
+174
View File
@@ -0,0 +1,174 @@
from tkinter import *
root = Tk()
root.title("Головний екран")
# Віджети ідентифікації студента
id_frame = Frame(root, bd=5)
id_label = Label(id_frame, text="Ідентифікація")
surname_label = Label(id_frame, text="Прізвище:")
surname_entry = Label(id_frame, text="Швед")
name_label = Label(id_frame, text="Ім'я:")
name_entry = Label(id_frame, text="Андрій")
parental_label = Label(id_frame, text="По-батькові:")
parental_entry = Label(id_frame, text="Дмитрович")
group_number_name = Label(id_frame, text="Номер групи:")
group_number_entry = Label(id_frame, text="23")
student_number_name = Label(id_frame, text="Номер у списку:")
student_number_entry = Label(id_frame, text="30")
variant_label = Label(id_frame, text="Варіант:")
variant_result_label = Label(id_frame, text="24")
# Пакувальники ідентифікації студента
id_frame.grid(row=0, column=0)
id_label.grid(row=0, column=0, columnspan=2)
surname_label.grid(row=1, column=0, sticky=E)
surname_entry.grid(row=1, column=1, sticky=W)
name_label.grid(row=2, column=0, sticky=E)
name_entry.grid(row=2, column=1, sticky=W)
parental_label.grid(row=3, column=0, sticky=E)
parental_entry.grid(row=3, column=1, sticky=W)
group_number_name.grid(row=4, column=0, sticky=E)
group_number_entry.grid(row=4, column=1, sticky=W)
student_number_name.grid(row=5, column=0, sticky=E)
student_number_entry.grid(row=5, column=1, sticky=W)
variant_label.grid(row=6, column=0, sticky=E)
variant_result_label.grid(row=6, column=1, sticky=W)
# Віджети універсальної множини
universal_set_frame = Frame(root, bd=5)
universal_set_label = Label(universal_set_frame, text="Межі універсальної множини")
lowest_label = Label(universal_set_frame, text="Від:")
highest_label = Label(universal_set_frame, text="До:")
lowest_entry = Entry(universal_set_frame, width=20)
highest_entry = Entry(universal_set_frame, width=20)
set_U_button = Button(universal_set_frame, text="Задати універсальну множину")
set_U_label = Label(universal_set_frame, text="Множина U:")
elements_U_label = Label(universal_set_frame)
# Пакувальники універсальної множини
universal_set_frame.grid(row=1, column=0)
universal_set_label.grid(row=0, column=0, columnspan=4)
lowest_label.grid(row=1, column=0)
lowest_entry.grid(row=1, column=1)
highest_label.grid(row=1, column=2)
highest_entry.grid(row=1, column=3)
set_U_button.grid(row=2, column=0, columnspan=4)
set_U_label.grid(row=3, column=0, columnspan=2, sticky=E)
elements_U_label.grid(row=3, column=2, columnspan=2, sticky=W)
# Віджети задання множин
set_declaration_frame = Frame(root, bd=5)
set_declaration_label = Label(set_declaration_frame, text="Задання множин", bd=5)
set_generation_label = Label(set_declaration_frame, text="Випадкова генерація", bd=5)
cardinality_A_label = Label(set_declaration_frame, text="Потужність A:")
cardinality_A_entry = Entry(set_declaration_frame, width=20)
cardinality_B_label = Label(set_declaration_frame, text="Потужність B:")
cardinality_B_entry = Entry(set_declaration_frame, width=20)
cardinality_C_label = Label(set_declaration_frame, text="Потужність C:")
cardinality_C_entry = Entry(set_declaration_frame, width=20)
cardinality_entries = [cardinality_A_entry, cardinality_B_entry, cardinality_C_entry]
set_generation_button = Button(set_declaration_frame, text="Згенерувати множини")
set_manual_label = Label(set_declaration_frame, text="Ручний ввід", bd=5)
manual_A_label = Label(set_declaration_frame, text="Введіть множину A:")
manual_A_entry = Entry(set_declaration_frame, width=40)
manual_B_label = Label(set_declaration_frame, text="Введіть множину B:")
manual_B_entry = Entry(set_declaration_frame, width=40)
manual_C_label = Label(set_declaration_frame, text="Введіть множину C:")
manual_C_entry = Entry(set_declaration_frame, width=40)
set_manual_button = Button(set_declaration_frame, text="Задати введені множини")
manual_entries = [manual_A_entry, manual_B_entry, manual_C_entry]
# Пакувальники задання множин
set_declaration_frame.grid(row=2, column=0)
set_declaration_label.grid(row=0, column=0, columnspan=4)
set_generation_label.grid(row=1, column=0, columnspan=2)
cardinality_A_label.grid(row=2, column=0, sticky=E)
cardinality_A_entry.grid(row=2, column=1)
cardinality_B_label.grid(row=3, column=0, sticky=E)
cardinality_B_entry.grid(row=3, column=1)
cardinality_C_label.grid(row=4, column=0, sticky=E)
cardinality_C_entry.grid(row=4, column=1)
set_generation_button.grid(row=5, column=0, columnspan=2)
set_manual_label.grid(row=1, column=2, columnspan=2)
manual_A_label.grid(row=2, column=2, sticky=E)
manual_A_entry.grid(row=2, column=3)
manual_B_label.grid(row=3, column=2, sticky=E)
manual_B_entry.grid(row=3, column=3)
manual_C_label.grid(row=4, column=2, sticky=E)
manual_C_entry.grid(row=4, column=3)
set_manual_button.grid(row=5, column=2, columnspan=2)
# Віджети множин
sets_frame = Frame(root, bd=5)
set_A_label = Label(sets_frame, text="Множина A:")
elements_A_label = Label(sets_frame)
set_B_label = Label(sets_frame, text="Множина B:")
elements_B_label = Label(sets_frame)
set_C_label = Label(sets_frame, text="Множина C:")
elements_C_label = Label(sets_frame)
set_labels = [elements_A_label, elements_B_label, elements_C_label]
# Пакувальники множин
sets_frame.grid(row=3, column=0)
set_A_label.grid(row=0, column=0, sticky=E)
elements_A_label.grid(row=0, column=1, sticky=W)
set_B_label.grid(row=1, column=0, sticky=E)
elements_B_label.grid(row=1, column=1, sticky=W)
set_C_label.grid(row=2, column=0, sticky=E)
elements_C_label.grid(row=2, column=1, sticky=W)
+104
View File
@@ -0,0 +1,104 @@
from tkinter import *
root = Tk()
root.title("Розрахунки початкового виразу")
# Віджети введених множин
sets_frame = Frame(root, bd=5)
set_A_label = Label(sets_frame, text="Множина A:", bd=5)
elements_A_label = Label(sets_frame)
set_B_label = Label(sets_frame, text="Множина B:", bd=5)
elements_B_label = Label(sets_frame)
set_C_label = Label(sets_frame, text="Множина C:", bd=5)
elements_C_label = Label(sets_frame)
set_labels = [elements_A_label, elements_B_label, elements_C_label]
# Пакувальники введених множин
sets_frame.grid(row=0, column=0)
set_A_label.grid(row=0, column=0, sticky=E)
elements_A_label.grid(row=0, column=1, sticky=W)
set_B_label.grid(row=1, column=0, sticky=E)
elements_B_label.grid(row=1, column=1, sticky=W)
set_C_label.grid(row=2, column=0, sticky=E)
elements_C_label.grid(row=2, column=1, sticky=W)
# Кнопка початку розрахунків
start_calculations_button = Button(root, text="Почати розрахунки")
start_calculations_button.grid(row=1, column=0)
# Віджети покрокового розв'язання
calculations_frame = Frame(root, bd=5)
expression_label = Label(calculations_frame, text="Вираз: D = ¬A ∪ B ∪ ¬C (B ∩ ¬C) (¬A ∩ C) (A ∩ B)", bd=5)
first_step_label = Label(calculations_frame, text="(B ∩ ¬C) = ", bd=5)
first_step_result = Label(calculations_frame)
second_step_label = Label(calculations_frame, text="(¬A ∩ C) = ", bd=5)
second_step_result = Label(calculations_frame)
third_step_label = Label(calculations_frame, text="(A ∩ B) = ", bd=5)
third_step_result = Label(calculations_frame)
fourth_step_label = Label(calculations_frame, text="(¬A ∩ C) (A ∩ B) = ", bd=5)
fourth_step_result = Label(calculations_frame)
fifth_step_label = Label(calculations_frame, text="(B ∩ ¬C) (¬A ∩ C) (A ∩ B) = ", bd=5)
fifth_step_result = Label(calculations_frame)
sixth_step_label = Label(calculations_frame, text="¬C (B ∩ ¬C) (¬A ∩ C) (A ∩ B) = ", bd=5)
sixth_step_result = Label(calculations_frame)
seventh_step_label = Label(calculations_frame, text="B ∪ ¬C (B ∩ ¬C) (¬A ∩ C) (A ∩ B) = ", bd=5)
seventh_step_result = Label(calculations_frame)
eighth_step_label = Label(calculations_frame, text="¬A ∪ B ∪ ¬C ∪ (B ∩ ¬C) (¬A ∩ C) (A ∩ B) = ", bd=5)
eighth_step_result = Label(calculations_frame)
calculation_result_labels = [first_step_result, second_step_result, third_step_result, fourth_step_result, fifth_step_result, sixth_step_result, seventh_step_result, eighth_step_result]
# Пакувальники покрокового розв'язання
calculations_frame.grid(row=2, column=0)
expression_label.grid(row=0, column=0, columnspan=2)
first_step_label.grid(row=1, column=0, sticky=E)
second_step_label.grid(row=2, column=0, sticky=E)
third_step_label.grid(row=3, column=0, sticky=E)
fourth_step_label.grid(row=4, column=0, sticky=E)
fifth_step_label.grid(row=5, column=0, sticky=E)
sixth_step_label.grid(row=6, column=0, sticky=E)
seventh_step_label.grid(row=7, column=0, sticky=E)
eighth_step_label.grid(row=8, column=0, sticky=E)
first_step_result.grid(row=1, column=1, sticky=W)
second_step_result.grid(row=2, column=1, sticky=W)
third_step_result.grid(row=3, column=1, sticky=W)
fourth_step_result.grid(row=4, column=1, sticky=W)
fifth_step_result.grid(row=5, column=1, sticky=W)
sixth_step_result.grid(row=6, column=1, sticky=W)
seventh_step_result.grid(row=7, column=1, sticky=W)
eighth_step_result.grid(row=8, column=1, sticky=W)
# Віджети множини D
d_frame = Frame(root, bd=5)
set_D_label = Label(d_frame, text="Множина D:", bd=5)
elements_D_label = Label(d_frame)
save_D_button = Button(d_frame, text="Зберегти D")
# Пакувальники множини D
d_frame.grid(row=3, column=0)
set_D_label.grid(row=0, column=0, sticky=E)
elements_D_label.grid(row=0, column=1, sticky=W)
save_D_button.grid(row=1, column=0, columnspan=2)
+79
View File
@@ -0,0 +1,79 @@
from tkinter import *
root = Tk()
root.title("Розрахунки спрощеного виразу")
# Віджети введених множин
sets_frame = Frame(root, bd=5)
set_A_label = Label(sets_frame, text="Множина A:", bd=5)
elements_A_label = Label(sets_frame)
set_B_label = Label(sets_frame, text="Множина B:", bd=5)
elements_B_label = Label(sets_frame)
set_C_label = Label(sets_frame, text="Множина C:", bd=5)
elements_C_label = Label(sets_frame)
# Пакувальники введених множин
sets_frame.grid(row=0, column=0)
set_A_label.grid(row=0, column=0, sticky=E)
elements_A_label.grid(row=0, column=1, sticky=W)
set_B_label.grid(row=1, column=0, sticky=E)
elements_B_label.grid(row=1, column=1, sticky=W)
set_C_label.grid(row=2, column=0, sticky=E)
elements_C_label.grid(row=2, column=1, sticky=W)
set_labels = [elements_A_label, elements_B_label, elements_C_label]
# Кнопка початку розрахунків
start_calculations_button = Button(root, text="Почати розрахунки")
start_calculations_button.grid(row=1, column=0)
# Віджети покрокового розв'язання
calculations_frame = Frame(root, bd=5)
expression_label = Label(calculations_frame, text="Вираз: D = ¬A ∪ B ∪ ¬C", bd=5)
first_step_label = Label(calculations_frame, text="¬A = ", bd=5)
first_step_result = Label(calculations_frame)
second_step_label = Label(calculations_frame, text="¬A B = ", bd=5)
second_step_result = Label(calculations_frame)
third_step_label = Label(calculations_frame, text="¬A B ¬C = ", bd=5)
third_step_result = Label(calculations_frame)
calculation_result_labels = [first_step_result, second_step_result, third_step_result]
# Пакувальники покрокового розв'язання
calculations_frame.grid(row=2, column=0)
expression_label.grid(row=0, column=0, columnspan=2)
first_step_label.grid(row=1, column=0, sticky=E)
second_step_label.grid(row=2, column=0, sticky=E)
third_step_label.grid(row=3, column=0, sticky=E)
first_step_result.grid(row=1, column=1, sticky=W)
second_step_result.grid(row=2, column=1, sticky=W)
third_step_result.grid(row=3, column=1, sticky=W)
# Віджети множини D
d_frame = Frame(root, bd=5)
set_D_label = Label(d_frame, text="Множина D:", bd=5)
elements_D_label = Label(d_frame)
save_D_button = Button(d_frame, text="Зберегти D")
# Пакувальники множини D
d_frame.grid(row=3, column=0)
set_D_label.grid(row=0, column=0)
elements_D_label.grid(row=0, column=1)
save_D_button.grid(row=1, column=0, columnspan=2)
+79
View File
@@ -0,0 +1,79 @@
from tkinter import *
root = Tk()
root.title("Обчислення Z")
# Віджети введених множин
sets_frame = Frame(root, bd=5)
set_A_label = Label(sets_frame, text="Множина A:", bd=5)
elements_A_label = Label(sets_frame)
set_B_label = Label(sets_frame, text="Множина B:", bd=5)
elements_B_label = Label(sets_frame)
set_C_label = Label(sets_frame, text="Множина C:", bd=5)
elements_C_label = Label(sets_frame)
# Пакувальники введених множин
sets_frame.grid(row=0, column=0)
set_A_label.grid(row=0, column=0, sticky=E)
elements_A_label.grid(row=0, column=1, sticky=W)
set_B_label.grid(row=1, column=0, sticky=E)
elements_B_label.grid(row=1, column=1, sticky=W)
set_C_label.grid(row=2, column=0, sticky=E)
elements_C_label.grid(row=2, column=1, sticky=W)
set_labels = [elements_A_label, elements_B_label, elements_C_label]
# Кнопка початку розрахунків
start_calculations_button = Button(root, text="Почати розрахунки")
start_calculations_button.grid(row=1, column=0)
# Віджети покрокового розв'язання
calculations_frame = Frame(root, bd=5)
expression_label = Label(calculations_frame, text="Вираз: Z = X ∆ Y", bd=5)
first_step_label = Label(calculations_frame, text="X = ¬B = ", bd=5)
first_step_result = Label(calculations_frame)
second_step_label = Label(calculations_frame, text="Y = ¬A = ", bd=5)
second_step_result = Label(calculations_frame)
third_step_label = Label(calculations_frame, text="Z = ", bd=5)
third_step_result = Label(calculations_frame)
step_results = [first_step_result, second_step_result, third_step_result]
# Пакувальники покрокового розв'язання
calculations_frame.grid(row=2, column=0, sticky=W)
expression_label.grid(row=0, column=0, columnspan=2)
first_step_label.grid(row=1, column=0, sticky=E)
second_step_label.grid(row=2, column=0, sticky=E)
third_step_label.grid(row=3, column=0, sticky=E)
first_step_result.grid(row=1, column=1, sticky=W)
second_step_result.grid(row=2, column=1, sticky=W)
third_step_result.grid(row=3, column=1, sticky=W)
# Віджети множини Z
z_frame = Frame(root, bd=5)
set_Z_label = Label(z_frame, text="Множина Z:", bd=5)
elements_Z_label = Label(z_frame)
save_Z_button = Button(z_frame, text="Зберегти Z")
# Пакувальники множини Z
z_frame.grid(row=3, column=0)
set_Z_label.grid(row=0, column=0)
elements_Z_label.grid(row=0, column=1)
save_Z_button.grid(row=1, column=0, columnspan=2)
+89
View File
@@ -0,0 +1,89 @@
from tkinter import *
root = Tk()
root.title("Збереження і відображення")
# Віджети початкового виразу
read_initial_frame = Frame(root, bd=5)
read_initial_D_button = Button(read_initial_frame, text="Зчитати результати\nобчислення початкового виразу")
initial_D_label = Label(read_initial_frame, text="D = ", bd=5)
initial_D_elements = Label(read_initial_frame)
# Пакувальники початкового виразу
read_initial_frame.grid(row=0, column=0)
read_initial_D_button.grid(row=0, column=0, columnspan=2)
initial_D_label.grid(row=1, column=0, sticky=E)
initial_D_elements.grid(row=1, column=1, sticky=W)
# Віджети спрощеного виразу
read_simplified_frame = Frame(root, bd=5)
read_simplified_D_button = Button(read_simplified_frame, text="Зчитати результати\nобчислення спрощеного виразу")
simplified_D_label = Label(read_simplified_frame, text="D = ", bd=5)
simplified_D_elements = Label(read_simplified_frame)
# Пакувальники спрощеного виразу
read_simplified_frame.grid(row=0, column=1)
read_simplified_D_button.grid(row=0, column=0, columnspan=2)
simplified_D_label.grid(row=1, column=0, sticky=E)
simplified_D_elements.grid(row=1, column=1, sticky=W)
# Віджети Z вбудованої
read_python_z_frame = Frame(root, bd=5)
read_default_Z_button = Button(read_python_z_frame, text="Зчитати Z обчислену\nвбудованими функціями")
python_Z_label = Label(read_python_z_frame, text="Z = ", bd=5)
python_Z_elements = Label(read_python_z_frame)
# Пакувальники Z вбудованої
read_python_z_frame.grid(row=1, column=0)
read_default_Z_button.grid(row=0, column=0, columnspan=2)
python_Z_label.grid(row=1, column=0, sticky=E)
python_Z_elements.grid(row=1, column=1, sticky=W)
# Віджети Z написаної
read_custom_z_frame = Frame(root, bd=5)
read_custom_Z_button = Button(read_custom_z_frame, text="Зчитати Z обчислену\nнаписаною функцією")
custom_Z_label = Label(read_custom_z_frame, text="Z = ", bd=5)
custom_Z_elements = Label(read_custom_z_frame)
# Пакувальники Z написаної
read_custom_z_frame.grid(row=1, column=1)
read_custom_Z_button.grid(row=0, column=0, columnspan=2)
custom_Z_label.grid(row=1, column=0, sticky=E)
custom_Z_elements.grid(row=1, column=1, sticky=W)
# Віджети порівняння D
compare_D_frame = Frame(root, bd=5)
compare_D_button = Button(compare_D_frame, text="Порівняти D")
# Пакувальники порівняння D
compare_D_frame.grid(row=2, column=0)
compare_D_button.grid(row=0, column=0)
# Віджети порівняння Z
compare_Z_frame = Frame(root, bd=5)
compare_Z_button = Button(compare_Z_frame, text="Порівняти Z")
# Пакувальники порівняння Z
compare_Z_frame.grid(row=2, column=1)
compare_Z_button.grid(row=0, column=0)
# Очищення файлів
clear_save_frame = Frame(root, bd=5)
clear_save_button = Button(clear_save_frame, text="Очистити збережені множини")
clear_save_frame.grid(row=3, column=0, columnspan=2)
clear_save_button.grid(row=0, column=0)
+21
View File
@@ -0,0 +1,21 @@
def z_calculations(input_sets, u_set):
x = u_set - input_sets[1]
y = u_set - input_sets[0]
results = set()
for curr_elem in x:
if (curr_elem not in y):
results.add(curr_elem)
for curr_elem in y:
if (curr_elem not in x):
results.add(curr_elem)
return [x, y, results]
def z_calculations_in(input_sets, u_set):
x = u_set - input_sets[1]
y = u_set - input_sets[0]
results = x ^ y
return results