2017-03-14 3 views
1

this question에서 나는 wxPython을 사용하여 사용자에게 입력을 요청하는 방법을 알아 냈습니다. 하지만 동시에 여러 정보를 요청할 수 있습니까?Python, wxPython을 사용하여 사용자로부터 다중 입력 받기

기본적으로 "Name" "Surname" "Nickname"을 묻는 세 개의 입력 필드가있는 메시지 상자를 만들고 싶습니다. 나는 또한 정말 간단 같은 코드를 갖고 싶어 :

name,surname,nick = askInfo("Name","Surname","Nickname") 

그것은 wxPython을해야하지 않습니다하지만 Tkinter의를 사용하지 않아야합니다.

답변

1

빌드 wx.Dialog 거기에 수많은 예제가 있습니다.

import wx 
class MyFrame(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent, -1, "Dialog Test",size=(500,400)) 
     self.panel = wx.Panel(self) 
     sizer = wx.BoxSizer(wx.VERTICAL) 
     self.log = wx.TextCtrl(self.panel, wx.ID_ANY, size=(400,300),style = wx.TE_MULTILINE|wx.TE_READONLY|wx.VSCROLL) 
     self.button = wx.Button(self.panel, label="Click me") 
     sizer.Add(self.log, 0, wx.EXPAND | wx.ALL, 10) 
     sizer.Add(self.button, 0, wx.EXPAND | wx.ALL, 10) 
     self.panel.SetSizer(sizer) 
     self.Bind(wx.EVT_BUTTON, self.OnButton) 

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

class GetData(wx.Dialog): 
    def __init__(self, parent): 
     wx.Dialog.__init__(self, parent, wx.ID_ANY, "Name Input", size= (650,220)) 
     self.panel = wx.Panel(self,wx.ID_ANY) 

     self.lblname = wx.StaticText(self.panel, label="Name", pos=(20,20)) 
     self.name = wx.TextCtrl(self.panel, value="", pos=(110,20), size=(500,-1)) 
     self.lblsur = wx.StaticText(self.panel, label="Surname", pos=(20,60)) 
     self.surname = wx.TextCtrl(self.panel, value="", pos=(110,60), size=(500,-1)) 
     self.lblnick = wx.StaticText(self.panel, label="Nickname", pos=(20,100)) 
     self.nickname = wx.TextCtrl(self.panel, value="", pos=(110,100), size=(500,-1)) 
     self.saveButton =wx.Button(self.panel, label="Save", pos=(110,160)) 
     self.closeButton =wx.Button(self.panel, 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() 
frame = MyFrame(None) 
frame.Show() 
app.MainLoop() 

result 항목에 특별한주의를 지불

관련 문제