2017-02-18 14 views
0

я работаю с тремя диалог (с именем: Box1, Box2 и Box3), как показано ниже: -WxPython - Отображение текста из двух диалоговых окон напечатаны на третьем диалоге

Основные расчеты проводятся на Box1 и Box2, как мне отобразить сумму расчета третьего диалога, то есть на Box3?

import wx 


class Box1 (wx.Dialog): 

    def __init__(self, parent): 
     wx.Dialog.__init__ (self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size(500,141), style = wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer6 = wx.BoxSizer(wx.VERTICAL) 

     self.m_panel2 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) 
     bSizer8 = wx.BoxSizer(wx.HORIZONTAL) 

     bSizer42 = wx.BoxSizer(wx.VERTICAL) 

     self.m_staticText61 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item1", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText61.Wrap(-1) 
     bSizer42.Add(self.m_staticText61, 0, wx.ALL, 5) 

     self.m_staticText62 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item2", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText62.Wrap(-1) 
     bSizer42.Add(self.m_staticText62, 0, wx.ALL, 5) 


     bSizer8.Add(bSizer42, 0, wx.EXPAND, 5) 

     bSizer43 = wx.BoxSizer(wx.VERTICAL) 


     bSizer43.AddSpacer((80, 0), 1, wx.EXPAND, 5) 


     bSizer8.Add(bSizer43, 0, wx.EXPAND, 5) 

     bSizer11 = wx.BoxSizer(wx.VERTICAL) 

     self.item1 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"7.50", wx.DefaultPosition, wx.Size(-1,20), 0) 
     bSizer11.Add(self.item1, 0, wx.ALL, 5) 

     self.item2 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"8.00", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer11.Add(self.item2, 0, wx.ALL, 5) 


     bSizer8.Add(bSizer11, 0, 0, 5) 


     self.m_panel2.SetSizer(bSizer8) 
     self.m_panel2.Layout() 
     bSizer8.Fit(self.m_panel2) 
     bSizer6.Add(self.m_panel2, 1, wx.EXPAND |wx.ALL, 5) 

     bSizer13 = wx.BoxSizer(wx.HORIZONTAL) 

     self.m_staticText25 = wx.StaticText(self, wx.ID_ANY, u"Quatity:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText25.Wrap(-1) 
     self.m_staticText25.SetFont(wx.Font(15, 70, 90, 92, False, wx.EmptyString)) 

     bSizer13.Add(self.m_staticText25, 0, wx.ALL|wx.EXPAND, 5) 

     quantity_choiceChoices = [ u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"10" ] 
     self.quantity_choice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, quantity_choiceChoices, 0) 
     self.quantity_choice.SetSelection(0) 
     bSizer13.Add(self.quantity_choice, 0, wx.ALL, 5) 

     self.ok_button = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.ok_button, 1, wx.ALL|wx.EXPAND, 5) 

     self.cancel_button = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.cancel_button, 1, wx.ALL, 5) 


     bSizer6.Add(bSizer13, 0, wx.EXPAND, 5) 


     self.SetSizer(bSizer6) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 
     self.ok_button.Bind(wx.EVT_BUTTON, self.okFunc) 
     self.cancel_button.Bind(wx.EVT_BUTTON, self.cancelFunc) 

    def __del__(self): 
     pass 


    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 


    def okFunc(self, event): 

     quatity_choice = int(self.quantity_choice.GetStringSelection()) 

     if self.item1.GetValue(): 
      price = quatity_choice * 7.5 
      print price 

     if self.item2.GetValue(): 
      price = quatity_choice * 8.0 
      print price 

     Box2(None).ShowModal() 






class Box2 (wx.Dialog): 

    def __init__(self, parent): 
     wx.Dialog.__init__ (self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size(500,141), style = wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer6 = wx.BoxSizer(wx.VERTICAL) 

     self.m_panel2 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) 
     bSizer8 = wx.BoxSizer(wx.HORIZONTAL) 

     bSizer42 = wx.BoxSizer(wx.VERTICAL) 

     self.m_staticText61 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item3", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText61.Wrap(-1) 
     bSizer42.Add(self.m_staticText61, 0, wx.ALL, 5) 

     self.m_staticText62 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item4", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText62.Wrap(-1) 
     bSizer42.Add(self.m_staticText62, 0, wx.ALL, 5) 


     bSizer8.Add(bSizer42, 0, wx.EXPAND, 5) 

     bSizer43 = wx.BoxSizer(wx.VERTICAL) 


     bSizer43.AddSpacer((80, 0), 1, wx.EXPAND, 5) 


     bSizer8.Add(bSizer43, 0, wx.EXPAND, 5) 

     bSizer11 = wx.BoxSizer(wx.VERTICAL) 

     self.item3 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"1.50", wx.DefaultPosition, wx.Size(-1,20), 0) 
     bSizer11.Add(self.item3, 0, wx.ALL, 5) 

     self.item4 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"2.00", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer11.Add(self.item4, 0, wx.ALL, 5) 


     bSizer8.Add(bSizer11, 0, 0, 5) 


     self.m_panel2.SetSizer(bSizer8) 
     self.m_panel2.Layout() 
     bSizer8.Fit(self.m_panel2) 
     bSizer6.Add(self.m_panel2, 1, wx.EXPAND |wx.ALL, 5) 

     bSizer13 = wx.BoxSizer(wx.HORIZONTAL) 

     self.m_staticText25 = wx.StaticText(self, wx.ID_ANY, u"Quatity:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText25.Wrap(-1) 
     self.m_staticText25.SetFont(wx.Font(15, 70, 90, 92, False, wx.EmptyString)) 

     bSizer13.Add(self.m_staticText25, 0, wx.ALL|wx.EXPAND, 5) 

     add_quantity_choiceChoices = [ u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"10" ] 
     self.add_quantity_choice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, add_quantity_choiceChoices, 0) 
     self.add_quantity_choice.SetSelection(0) 
     bSizer13.Add(self.add_quantity_choice, 0, wx.ALL, 5) 

     self.ok_button = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.ok_button, 1, wx.ALL|wx.EXPAND, 5) 

     self.cancel_button = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.cancel_button, 1, wx.ALL, 5) 


     bSizer6.Add(bSizer13, 0, wx.EXPAND, 5) 


     self.SetSizer(bSizer6) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 
     self.ok_button.Bind(wx.EVT_BUTTON, self.okFunc) 
     self.cancel_button.Bind(wx.EVT_BUTTON, self.cancelFunc) 

    def __del__(self): 
     pass 


    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 


    def okFunc(self, event): 

     add_quatity_choice = int(self.add_quantity_choice.GetStringSelection()) 

     if self.item3.GetValue(): 
      add_price = add_quatity_choice * 1.5 
      print add_price 

     if self.item4.GetValue(): 
      add_price = add_quatity_choice * 2.0 
      print add_price 


     Box3(None).ShowModal() 






class Box3 (wx.Dialog): 

    def __init__(self, parent): 
     wx.Dialog.__init__ (self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size(257,165), style = wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer13 = wx.BoxSizer(wx.VERTICAL) 

     self.totalText = wx.StaticText(self, wx.ID_ANY, u"Total is:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.totalText.Wrap(-1) 
     self.totalText.SetFont(wx.Font(20, 70, 90, 90, False, wx.EmptyString)) 

     bSizer13.Add(self.totalText, 0, wx.ALL|wx.EXPAND, 5) 

     self.totalText1 = wx.StaticText(self, wx.ID_ANY, u"?", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.totalText1.Wrap(-1) 
     self.totalText1.SetFont(wx.Font(20, 70, 90, 90, False, wx.EmptyString)) 

     self.totalText1.SetLabel(str('price + add_price')) 
     # How to I get the "price + add_price" printed above 

     bSizer13.Add(self.totalText1, 0, wx.ALL, 5) 


     self.SetSizer(bSizer13) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 

    def __del__(self): 
     pass 


    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 





app = wx.App(0) 
Box1(None).Show() 
app.MainLoop() 

Простая арифметика выполняется на Box1 и Box2, я хочу, чтобы сумма результатов, которые будут отображаться на третьем диалоговом окне (Box3)

Как я могу получить это сделано?

код основан на WxPython классике и питона 2,7

ответ

1

Вы должны передать информацию, полученную от каждого диалога в следующем диалоге через инициализации методов. Вот пример быстрой работы

import wx 


class Box1(wx.Dialog): 
    def __init__(self, parent): 
     wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, 
          size=wx.Size(500, 141), style=wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer6 = wx.BoxSizer(wx.VERTICAL) 

     self.m_panel2 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) 
     bSizer8 = wx.BoxSizer(wx.HORIZONTAL) 

     bSizer42 = wx.BoxSizer(wx.VERTICAL) 

     self.m_staticText61 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item1", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText61.Wrap(-1) 
     bSizer42.Add(self.m_staticText61, 0, wx.ALL, 5) 

     self.m_staticText62 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item2", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText62.Wrap(-1) 
     bSizer42.Add(self.m_staticText62, 0, wx.ALL, 5) 

     bSizer8.Add(bSizer42, 0, wx.EXPAND, 5) 

     bSizer43 = wx.BoxSizer(wx.VERTICAL) 

     bSizer43.AddSpacer((80, 0), 1, wx.EXPAND, 5) 

     bSizer8.Add(bSizer43, 0, wx.EXPAND, 5) 

     bSizer11 = wx.BoxSizer(wx.VERTICAL) 

     self.item1 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"7.50", wx.DefaultPosition, wx.Size(-1, 20), 0) 
     bSizer11.Add(self.item1, 0, wx.ALL, 5) 

     self.item2 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"8.00", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer11.Add(self.item2, 0, wx.ALL, 5) 

     bSizer8.Add(bSizer11, 0, 0, 5) 

     self.m_panel2.SetSizer(bSizer8) 
     self.m_panel2.Layout() 
     bSizer8.Fit(self.m_panel2) 
     bSizer6.Add(self.m_panel2, 1, wx.EXPAND | wx.ALL, 5) 

     bSizer13 = wx.BoxSizer(wx.HORIZONTAL) 

     self.m_staticText25 = wx.StaticText(self, wx.ID_ANY, u"Quatity:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText25.Wrap(-1) 
     self.m_staticText25.SetFont(wx.Font(15, 70, 90, 92, False, wx.EmptyString)) 

     bSizer13.Add(self.m_staticText25, 0, wx.ALL | wx.EXPAND, 5) 

     quantity_choiceChoices = [u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"10"] 
     self.quantity_choice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, quantity_choiceChoices, 0) 
     self.quantity_choice.SetSelection(0) 
     bSizer13.Add(self.quantity_choice, 0, wx.ALL, 5) 

     self.ok_button = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.ok_button, 1, wx.ALL | wx.EXPAND, 5) 

     self.cancel_button = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.cancel_button, 1, wx.ALL, 5) 

     bSizer6.Add(bSizer13, 0, wx.EXPAND, 5) 

     self.SetSizer(bSizer6) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 
     self.ok_button.Bind(wx.EVT_BUTTON, self.okFunc) 
     self.cancel_button.Bind(wx.EVT_BUTTON, self.cancelFunc) 

    def __del__(self): 
     pass 

    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 

    def okFunc(self, event): 

     quatity_choice = int(self.quantity_choice.GetStringSelection()) 
     price = 0 
     if self.item1.GetValue(): 
      price = quatity_choice * 7.5 
      print price 

     if self.item2.GetValue(): 
      price = quatity_choice * 8.0 
      print price 

     Box2(None, price).ShowModal() 


class Box2(wx.Dialog): 
    def __init__(self, parent, price1): 
     self.price1 = price1 
     wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, 
          size=wx.Size(500, 141), style=wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer6 = wx.BoxSizer(wx.VERTICAL) 

     self.m_panel2 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) 
     bSizer8 = wx.BoxSizer(wx.HORIZONTAL) 

     bSizer42 = wx.BoxSizer(wx.VERTICAL) 

     self.m_staticText61 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item3", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText61.Wrap(-1) 
     bSizer42.Add(self.m_staticText61, 0, wx.ALL, 5) 

     self.m_staticText62 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"item4", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText62.Wrap(-1) 
     bSizer42.Add(self.m_staticText62, 0, wx.ALL, 5) 

     bSizer8.Add(bSizer42, 0, wx.EXPAND, 5) 

     bSizer43 = wx.BoxSizer(wx.VERTICAL) 

     bSizer43.AddSpacer((80, 0), 1, wx.EXPAND, 5) 

     bSizer8.Add(bSizer43, 0, wx.EXPAND, 5) 

     bSizer11 = wx.BoxSizer(wx.VERTICAL) 

     self.item3 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"1.50", wx.DefaultPosition, wx.Size(-1, 20), 0) 
     bSizer11.Add(self.item3, 0, wx.ALL, 5) 

     self.item4 = wx.RadioButton(self.m_panel2, wx.ID_ANY, u"2.00", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer11.Add(self.item4, 0, wx.ALL, 5) 

     bSizer8.Add(bSizer11, 0, 0, 5) 

     self.m_panel2.SetSizer(bSizer8) 
     self.m_panel2.Layout() 
     bSizer8.Fit(self.m_panel2) 
     bSizer6.Add(self.m_panel2, 1, wx.EXPAND | wx.ALL, 5) 

     bSizer13 = wx.BoxSizer(wx.HORIZONTAL) 

     self.m_staticText25 = wx.StaticText(self, wx.ID_ANY, u"Quatity:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.m_staticText25.Wrap(-1) 
     self.m_staticText25.SetFont(wx.Font(15, 70, 90, 92, False, wx.EmptyString)) 

     bSizer13.Add(self.m_staticText25, 0, wx.ALL | wx.EXPAND, 5) 

     add_quantity_choiceChoices = [u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"10"] 
     self.add_quantity_choice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 
              add_quantity_choiceChoices, 0) 
     self.add_quantity_choice.SetSelection(0) 
     bSizer13.Add(self.add_quantity_choice, 0, wx.ALL, 5) 

     self.ok_button = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.ok_button, 1, wx.ALL | wx.EXPAND, 5) 

     self.cancel_button = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0) 
     bSizer13.Add(self.cancel_button, 1, wx.ALL, 5) 

     bSizer6.Add(bSizer13, 0, wx.EXPAND, 5) 

     self.SetSizer(bSizer6) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 
     self.ok_button.Bind(wx.EVT_BUTTON, self.okFunc) 
     self.cancel_button.Bind(wx.EVT_BUTTON, self.cancelFunc) 

    def __del__(self): 
     pass 

    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 

    def okFunc(self, event): 

     add_quatity_choice = int(self.add_quantity_choice.GetStringSelection()) 
     add_price = 0 
     if self.item3.GetValue(): 
      add_price = add_quatity_choice * 1.5 
      print add_price 

     if self.item4.GetValue(): 
      add_price = add_quatity_choice * 2.0 
      print add_price 

     Box3(None, self.price1+add_price).ShowModal() 


class Box3(wx.Dialog): 
    def __init__(self, parent, total): 
     self.total = total 
     wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, 
          size=wx.Size(257, 165), style=wx.DEFAULT_DIALOG_STYLE) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer13 = wx.BoxSizer(wx.VERTICAL) 

     self.totalText = wx.StaticText(self, wx.ID_ANY, u"Total is:", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.totalText.Wrap(-1) 
     self.totalText.SetFont(wx.Font(20, 70, 90, 90, False, wx.EmptyString)) 

     bSizer13.Add(self.totalText, 0, wx.ALL | wx.EXPAND, 5) 

     self.totalText1 = wx.StaticText(self, wx.ID_ANY, u"?", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.totalText1.Wrap(-1) 
     self.totalText1.SetFont(wx.Font(20, 70, 90, 90, False, wx.EmptyString)) 

     self.totalText1.SetLabel(str(total)) 
     # How to I get the "price + add_price" printed above 

     bSizer13.Add(self.totalText1, 0, wx.ALL, 5) 

     self.SetSizer(bSizer13) 
     self.Layout() 

     self.Centre(wx.BOTH) 

     # Connect Events 
     self.Bind(wx.EVT_CLOSE, self.cancelFunc) 

    def __del__(self): 
     pass 

    # Virtual event handlers, overide them in your derived class 
    def cancelFunc(self, event): 
     self.Destroy() 


app = wx.App(0) 
Box1(None).Show() 
app.MainLoop() 
+0

Отлично работает. –