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()