-
Notifications
You must be signed in to change notification settings - Fork 0
/
orders.py
85 lines (71 loc) · 2.8 KB
/
orders.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
# orders.py
# -*- coding: utf-8 -*-
'''
Creación de un panel de control que permita tomar órdenes/comdandas de un restaurante
El programa está compuesto por tres pestañas:
1. Order. Un panel para escribir lo que se desee
2. Currency. Selección de la divisa que se desea usar. En este ejemplo: "Euros", "Dollars", "Pounds"
3. Se muestra el mensaje de la primera pestaña y un mensaje relacionado con la divisa elegida en la segunda pestaña.
'''
# Módulos
try:
import wx
from wx.lib.pubsub import pub
except ImportError: # Error si no se encuentra el módulo
raise(ImportError,"The wxPython module is required.")
# Variables globales
currency = 'Euros'
mss = ''
# Clase de la ventana principal
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title, size = (250,150))
self.InitUI()
def InitUI(self):
global nb
nb = wx.Notebook(self) # Se usa la clase "Notebook"
nb.AddPage(Tab1(nb),"Order") # Primera pestaña/hoja
nb.AddPage(Tab2(nb),"Currency") # Segunda pestaña/hoja
nb.AddPage(Tab3(nb),"Final") # Tercera pestaña/hoja
self.Centre() # Posición de la ventana: Centro
self.Show(True)
# Clase de la pestaña 1
class Tab1(wx.Panel):
def __init__(self, parent):
super(Tab1, self).__init__(parent)
self.text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))
nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.Actions)
def Actions(self, evt):
'''Método que actualiza el texto que se escribe en la primera pestaña'''
global mss
mss = self.text.GetValue()
pub.sendMessage("messenger", message = mss) # Envíamos la información por medio de "messenger"
# Clase de la pestaña 2
class Tab2(wx.Panel):
def __init__(self, parent):
super(Tab2, self).__init__(parent)
currencies = ['Euros', 'Dollars', 'Pounds']
self.rbox = wx.RadioBox(self, label = 'Monedas', pos = (10,10), choices = currencies,
majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
self.Bind(wx.EVT_RADIOBOX,self.onRadioBox)
def onRadioBox(self,e):
'''Método que actualiza el valor de la divisa elegida en la segunda pestaña'''
global currency
currency = self.rbox.GetStringSelection()
# Clase de la pestaña 3
class Tab3(wx.Panel):
def __init__(self, parent):
super(Tab3, self).__init__(parent)
pub.subscribe(self.myListener, "messenger") # Recibimos la información de "messenger"
self.txt = wx.StaticText(self, -1, 'Your choice is Euros')
def myListener(self, message):
'''Método que recolecta la información de las pestañas 1 y 2 para mostrarlo en la pestaña 3'''
msg = message
if message:
msg += '\n'
msg += 'Your choice is ' + currency
self.txt.SetLabel(msg)
### Main ###
ex = wx.App()
Mywin(None,'Orders')
ex.MainLoop()