Использование wxpython Как получить слова, которые я печатаю на одной панели Textctrl, чтобы зашифровать на другой, и наоборот - PullRequest
0 голосов
/ 24 марта 2019
y = list(jumble)
x = list(alphabet)
self.button1.Bind(wx.EVT_BUTTON, self.OkButton)
self.button2.Bind(wx.EVT_BUTTON, self.YnButton)
i = 0

def OkButton(self, e ):
    global str1
    for i in range(len(x)):
    f1 = x[i]
    f2 = y[i]
    i += 1
    str2 = str1.replace(f1,f2)
    str1 = str2
    self.result.SetLabel(self.editname.GetValue())

def YnButton(self, e):
    global str1
    i = 0
    for i in range(len(x)):
    f1 = x[i]
    f2 = y[i]
    i += 1
    str2 = str1.replace(f2,f1)
    str1 = str2
    self.result.SetLabel(self.editname.GetValue())

Здесь я связываю button1 с OkButton и button2 с ynButton, что должно произойти, когда я наберу слово на первой панели, оно должно появиться во второй зашифрованной, а затем расшифровать снова.

1 Ответ

0 голосов
/ 02 апреля 2019

Примерно так:

import wx

class MyWin(wx.Frame):
    """
    Creates the GUI
    """
    def __init__(self):
        super().__init__(None, title="My Enigma Machine", style=wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))
        #### Widgets
        ## Panel
        self.panel = wx.Panel(self)
        ## Buttons
        self.buttonEncript = wx.Button(self.panel, label='Encript')
        self.buttonDecript = wx.Button(self.panel, label='Decript')
        ## TextCtrl
        self.tcToEncript = wx.TextCtrl(self.panel, value="", size=(515, 22))
        self.tcToDecript = wx.TextCtrl(self.panel, value="", size=(515, 22))
        #### Sizers
        self.sizer = wx.GridBagSizer(1, 1)
        self.sizer.Add(self.tcToEncript,     pos=(0, 0), border=2, flag=wx.EXPAND|wx.ALL)
        self.sizer.Add(self.buttonEncript, pos=(0, 1), border=2, flag=wx.ALIGN_CENTER|wx.ALL)
        self.sizer.Add(self.tcToDecript,     pos=(1, 0), border=2, flag=wx.EXPAND|wx.ALL)
        self.sizer.Add(self.buttonDecript, pos=(1, 1), border=2, flag=wx.ALIGN_CENTER|wx.ALL)
        self.panel.SetSizer(self.sizer)
        self.sizer.Fit(self)
        #### Bind
        self.buttonEncript.Bind(wx.EVT_BUTTON, self.OnEncript)
        self.buttonDecript.Bind(wx.EVT_BUTTON, self.OnDecript)

    #### Methods of the class
    def OnEncript(self, event):
        """
        Encript the text. It will just change the case of each letter
        """
        string = self.tcToEncript.GetValue()
        stringEncripted = string.swapcase()
        self.tcToDecript.SetValue(stringEncripted)

    def OnDecript(self, event):
        """
        Same as OnEncript
        """
        string = self.tcToDecript.GetValue()
        stringDecripted = string.swapcase()
        self.tcToEncript.SetValue(stringDecripted)       

if __name__ == '__main__':
    app = wx.App()
    frame = MyWin()
    frame.Show()
    app.MainLoop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...