-
Notifications
You must be signed in to change notification settings - Fork 0
/
gui_conjuntos.py
110 lines (102 loc) · 4.76 KB
/
gui_conjuntos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#-*- encoding: utf-8 -*-
#Credits to gui_form: Pedro Jefferson
#Github: 1pedro
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
import conjuntos
class Janela(Gtk.Window):
def __init__(self):
#Janela Principal
Gtk.Window.__init__(self, title="Álgebra de Conjuntos")
Gtk.Window.set_size_request(self,500,400)
Gtk.Window.set_resizable(self,False)
Gtk.Window.modify_bg(self,Gtk.StateType.NORMAL,Gdk.color_parse("#cccccc"))
#Grid_total
self.grid_total = Gtk.Grid()
self.add(self.grid_total)
self.grid1 = Gtk.Grid()
self.grid1 = Gtk.Grid(column_homogeneous=False,column_spacing=10,row_spacing=10)
#Texto e box de escolha para a Operação
self.combo = Gtk.ComboBoxText()
self.label_combo = Gtk.Label(label="Operação: ")
self.label_combo.set_halign(Gtk.Align.END)
self.grid1.attach(self.label_combo,1,2,1,1)
self.combo.insert(0,"0", "União (A U B)")
self.combo.insert(1,"1", "Interseção (A ∩ B)")
self.combo.insert(2,"2", "Diferença (A - B)")
self.combo.insert(3,"3", "Diferença Simétrica (A △ B)")
self.combo.insert(4,"4", "Complementar (Ac)")
self.combo.set_halign(Gtk.Align.START)
self.grid1.attach(self.combo, 2,2,1,1)
#Texto e Campo de entrada do Conjunto A
self.label_conjuntoA = Gtk.Label(label=" Conjunto A: ")
self.label_conjuntoA.set_halign(Gtk.Align.END)
self.grid1.attach(self.label_conjuntoA,1,4,1,1)
self.entry_conjuntoA = Gtk.Entry()
self.entry_conjuntoA.set_max_length(100)
self.entry_conjuntoA.set_width_chars(50)
self.entry_conjuntoA.set_halign(Gtk.Align.FILL)
self.grid1.attach(self.entry_conjuntoA, 2,4,1,1)
self.entry_conjuntoA.set_text("1,2,3")
#Texto e Campo de entrada do conjunto B
self.label_conjuntoB = Gtk.Label(label=" Conjunto B: ")
self.label_conjuntoB.set_halign(Gtk.Align.END)
self.grid1.attach(self.label_conjuntoB,1,6,1,1)
self.entry_conjuntoB = Gtk.Entry()
self.entry_conjuntoB.set_max_length(100)
self.entry_conjuntoB.set_width_chars(50)
self.entry_conjuntoB.set_halign(Gtk.Align.FILL)
self.grid1.attach(self.entry_conjuntoB, 2,6,1,1)
self.entry_conjuntoB.set_text("4,5,6")
#Botão de Resultado
self.button = Gtk.Button(label="Ver Solução")
self.button.set_halign(Gtk.Align.START)
self.grid1.attach(self.button,2,12,2,2)
self.button.connect("clicked", self.button_clicked)
#Texto de Resultado / Conjunto Solução
self.label_solucao = Gtk.Label(label=" ")
self.label_solucao.set_halign(Gtk.Align.START)
self.grid1.attach(self.label_solucao,2,18,1,1)
#Espaçamento das grids
self.grid1.set_row_spacing(30)
self.box3 = Gtk.Box()
#Colocando a Grid1 e box3 na grid principal
self.grid_total.set_row_spacing(20)
self.grid_total.attach(self.grid1, 0,3,2,1)
self.grid_total.attach(self.box3, 0,9,1,1)
def button_clicked(self, widget):
operacao = self.combo.get_active_text()
conjunto_a = self.entry_conjuntoA.get_text()
conjunto_b = self.entry_conjuntoB.get_text()
conjunto_a = conjunto_a.split(',')
conjunto_b = conjunto_b.split(',')
resultado = []
if(operacao == "União (A U B)"):
resultado = conjuntos.uniao(conjunto_a, conjunto_b)
elif(operacao == "Interseção (A ∩ B)"):
resultado = conjuntos.intersecao(conjunto_a, conjunto_b)
elif(operacao == "Diferença (A - B)"):
resultado = conjuntos.diferenca(conjunto_a, conjunto_b)
elif(operacao == "Diferença Simétrica (A △ B)"):
resultado = conjuntos.difSimetrica(conjunto_a, conjunto_b)
elif(operacao == "Complementar (Ac)"):
resultado = conjuntos.diferenca(conjunto_b, conjunto_a)
try:
resultado = [float(i) for i in resultado]
resultado = conjuntos.ordenaVetor(resultado)
resultado = ", ".join(str(x) for x in resultado)
resultado = "[" + resultado + "]"
self.label_solucao.set_text(resultado)
except:
self.label_solucao.set_text("Por favor, insira elementos válidos nos dois conjuntos!\n\nEx: 1,2,3,4,5")
if(operacao == None):
self.label_solucao.set_text("Escolha uma operação!")
elif(resultado == "[]"):
self.label_solucao.set_text("[ ] ou ø")
#Inicialização da aplicação
win = Janela()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()