python user-interface input dialog wxpython

En el botón, haga clic en abrir wxpython TextEntryDialog y obtenga entradas múltiples del usuario



user-interface input (1)

Quiero abrir un TextEntryDialog, cuando el usuario hace clic en el botón. Entonces, si tengo un botón en el marco principal que voy a vincular de esta manera:

self.Bind(wx.EVT_BUTTON, self.OnAddNew, self.add_new_btn)

Ahora tengo que abrir un TextEntryDialog cuando el usuario hace clic en el botón add_new. Quiero hacer que textentry dialogue algo como este Python, usando wxPython para obtener múltiples entradas del usuario

¿Cómo puedo hacer eso? ¿Necesito simplemente pegar ese código en `def OnAddNew (self, event): aquí está el enlace pastebin a mi código: https://pastebin.com/UEYscgFa He creado clase dentro de una función, así que es posible hacer ¿de ese modo?


¡NO!
GetData es una clase en sí misma.
Ese código ya te proporciona el método. El MyFrame es todo pelusa, para crear un ejemplo de trabajo independiente.

def OnButton(self,event): dlg = GetData(parent = self.panel) dlg.ShowModal() if dlg.result_name: self.log.AppendText("Name: "+dlg.result_name+"/n") self.log.AppendText("Surname: "+dlg.result_surname+"/n") self.log.AppendText("Nickname: "+dlg.result_nickname+"/n") else: self.log.AppendText("No Input found/n") dlg.Destroy()

Editar: No entiendo dónde se le escaparon las instrucciones en mis comentarios, pero por mis pecados, aquí está su código limpio y editado como en los comentarios.

import sqlite3 import wx import os class Example(wx.Frame): def __init__(self, parent, title): super(Example, self).__init__(parent, title=title, size=(1000,800)) self.inter_list = list() self.plot_list = list() self.InitUI() self.Layout() self.Centre() self.Show() def InitUI(self): self.p = wx.Panel(self) bs = wx.BoxSizer(wx.VERTICAL) gs = wx.GridSizer(10, 18, 5, 5) bs.Add(gs, 1, wx.EXPAND) self.search_btn=wx.Button(self.p,-1,"Search!") self.search_btn.Bind(wx.EVT_BUTTON, self.OnSearch, self.search_btn) bs.Add(self.search_btn,0,wx.ALIGN_CENTER) self.p.SetSizer(bs) def OnSearch(self, event): dlg = GetData(parent = self.p) dlg.ShowModal() if dlg.result_name: print "Name: "+dlg.result_name+"/n" print "Surname: "+dlg.result_surname+"/n" print "Nickname: "+dlg.result_nickname+"/n" else: print "No Input found/n" dlg.Destroy() class GetData(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent, wx.ID_ANY, "Name Input", size= (650,220)) self.p = wx.Panel(self,wx.ID_ANY) self.lblname = wx.StaticText(self.p, label="Name", pos=(20,20)) self.name = wx.TextCtrl(self.p, value="", pos=(110,20), size=(500,-1)) self.lblsur = wx.StaticText(self.p, label="Surname", pos=(20,60)) self.surname = wx.TextCtrl(self.p, value="", pos=(110,60), size=(500,-1)) self.lblnick = wx.StaticText(self.p, label="Nickname", pos=(20,100)) self.nickname = wx.TextCtrl(self.p, value="", pos=(110,100), size=(500,-1)) self.saveButton =wx.Button(self.p, label="Save", pos=(110,160)) self.closeButton =wx.Button(self.p, label="Cancel", pos=(210,160)) self.saveButton.Bind(wx.EVT_BUTTON, self.SaveConnString) self.closeButton.Bind(wx.EVT_BUTTON, self.OnQuit) self.Bind(wx.EVT_CLOSE, self.OnQuit) self.Show() def OnQuit(self, event): self.result_name = None self.Destroy() def SaveConnString(self, event): self.result_name = self.name.GetValue() self.result_surname = self.surname.GetValue() self.result_nickname = self.nickname.GetValue() self.Destroy() app = wx.App() Example(None, title = ''Raman Spectroscopy Database'') app.MainLoop()