Могу ли я связать кнопку OK на первой панели с функцией, которая запускается, и проверить, правильно ли введен правильный идентификатор и отображается ли следующая панель? - PullRequest
0 голосов
/ 21 марта 2019
import wx
class MainFrame (wx.Frame):
    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 800,600 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
        bSizer1 = wx.BoxSizer( wx.VERTICAL )
        self.SetSizer( bSizer1 )
        self.Layout()

        self.Centre( wx.BOTH )
    def __del__( self ):
        pass
class first_panel ( wx.Panel ):
    def __init__( self, parent ):
        wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 800,600 ), style = wx.TAB_TRAVERSAL )
        sizer = wx.GridBagSizer(5, 5)
        greetings = wx.StaticText(self, label='Welcome to 24-hour ATM service')
        sizer.Add(greetings, pos=(0, 0), flag=wx.TOP|wx.LEFT|wx.BOTTOM, border=15)
        line = wx.StaticLine(self)
        sizer.Add(line, pos=(1, 0), span=(1, 5), flag=wx.EXPAND|wx.BOTTOM, border=10)
        customerIdText = wx.StaticText(self, label="Customer Id")
        sizer.Add(customerIdText, pos=(3, 0), flag=wx.LEFT|wx.TOP, border=10)
        customerIdInput = wx.TextCtrl(self)
        sizer.Add(customerIdInput, pos=(3, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND, border=5)
        okButton = wx.Button(self, label="Ok")
        sizer.Add(okButton, pos=(4, 3), span=(1, 1))
        okButton.Bind(wx.EVT_BUTTON, self.OnOkClicked)
        cancelButton = wx.Button(self, label="Cancel")

1 Ответ

0 голосов
/ 22 марта 2019

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

import wx

choices=["Withdraw Cash","Make a deposit","Check Balance"]

class Example(wx.Frame):

    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, size=(750,-1))
        self.Customer_panel()
        self.Show()

    def Customer_panel(self):
        self.panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        text = wx.StaticText(self.panel, label="Customer Id:")
        sizer.Add(text, 0, flag=wx.ALL, border=5)
        self.customer_id = wx.TextCtrl(self.panel)
        sizer.Add(self.customer_id, 0, flag=wx.ALL, border=5)
        next = wx.Button(self.panel, label="Login")
        sizer.Add(next, 0, flag=wx.ALL, border=5)
        self.panel.SetSizerAndFit(sizer)
        next.Bind(wx.EVT_BUTTON, self.OnNext_1)
        self.customer_id.SetFocus()

    def OnNext_1(self, event):
        self.CustId = self.customer_id.GetValue()
        if self.CustId != "1442":
            wx.MessageBox("Incorrect Customer Id","Error", wx.OK | wx.ICON_ERROR)
            self.customer_id.SetValue('')
            self.customer_id.SetFocus()
            return
        self.panel.Destroy()
        self.Transaction_type_panel()

    def Transaction_type_panel(self):
        self.panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        text = wx.StaticText(self.panel, label="Customer Id: "+str(self.CustId))
        sizer.Add(text, 0, flag=wx.ALL, border=5)
        self.trans_type = wx.ComboBox(self.panel, -1, "Transaction type", choices=choices)
        sizer.Add(self.trans_type, 0, flag=wx.ALL, border=5)
        next = wx.Button(self.panel, label="Next")
        sizer.Add(next, 0, flag=wx.ALL, border=5)
        back = wx.Button(self.panel, label="Back")
        sizer.Add(back, 0, flag=wx.ALL, border=5)
        exit = wx.Button(self.panel, label="Exit")
        sizer.Add(exit, 0, flag=wx.ALL, border=5)
        self.panel.SetSizerAndFit(sizer)
        next.Bind(wx.EVT_BUTTON, self.OnNext_2)
        back.Bind(wx.EVT_BUTTON, self.OnBack_2)
        exit.Bind(wx.EVT_BUTTON, self.OnExit_2)
        self.trans_type.SetSelection(0)

    def OnNext_2(self, event):
        self.Type = self.trans_type.GetSelection()
        self.panel.Destroy()
        self.Transaction_panel()

    def OnBack_2(self, event):
        self.panel.Destroy()
        self.Customer_panel()

    def OnExit_2(self, event):
        self.Destroy()

    def Transaction_panel(self):
        self.panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        text = wx.StaticText(self.panel, label="Customer Id: "+str(self.CustId))
        sizer.Add(text, 0, flag=wx.ALL, border=5)
        text2 = wx.StaticText(self.panel, label="You chose to "+choices[self.Type])
        sizer.Add(text2, 0, flag=wx.ALL, border=5)
        exit = wx.Button(self.panel, label="Exit")
        sizer.Add(exit, 0, flag=wx.ALL, border=5)
        back = wx.Button(self.panel, label="Back")
        sizer.Add(back, 0, flag=wx.ALL, border=5)
        self.panel.SetSizerAndFit(sizer)
        exit.Bind(wx.EVT_BUTTON, self.OnExit_3)
        back.Bind(wx.EVT_BUTTON, self.OnBack_3)

    def OnExit_3(self, event):
        self.Destroy()

    def OnBack_3(self, event):
        self.panel.Destroy()
        self.Transaction_type_panel()

app = wx.App()
Example(None, title='Sequential Panels')
app.MainLoop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...