wxpython에서 GUI를 통해 입력한 값 가져오기

psychopy로 자극할 때 자극 매개 변수는 GUI로 기술할 수 있기 때문에 필기를 해야 한다.
python은 다양한 GUI 선택이 있지만 psychopy를 입력할 때 wxpython은 기본적으로 설치해야 하기 때문에 사용합니다.
판면 디자인에 관해서는 처음에는 이해할 수 없고 고통스러웠지만 wwx.GridSizer를 사용할 때 Psychopy를 사용하는 사람은 MATLAB/matplotlib의subplot와 같은 느낌을 사용할 수 있다.
각 GUI를 목록에 넣으면 나중에 더 쉽게 매개 변수를 추가할 수 있습니다.
import wx
class GUIinput:
    def __init__(self):
        self.frame = wx.Frame(None, -1, "textbox")
        self.frame.SetTitle('Exp. Params.')
        panel_ui = wx.Panel(self.frame, wx.ID_ANY, size=(400, 100)) 

        layout = wx.GridSizer(rows=6, cols=2, gap=(5, 5))
        labels = ['NI-dev ID', 'Durations[s]', 'ISI [s]', 'Init Wait [s]', 'RGB Channels']
        defaults = ['Dev2', '5,5,5,5', '0', '5', '0,0,1']

        self.frame.labels = []
        self.frame.tboxes = []
        for k, i in enumerate(labels):
            self.frame.labels.append(wx.StaticText(panel_ui, wx.ID_ANY, labels[k]))
            self.frame.tboxes.append(wx.TextCtrl(panel_ui, wx.ID_ANY, defaults[k]))

        # button        
        self.frame.btn = wx.Button(panel_ui, -1, 'Submit')
        self.frame.btn.Bind(wx.EVT_BUTTON, self.Clicked)

        # layout
        for k, i in enumerate(self.frame.labels):
            layout.Add(i)
            layout.Add(self.frame.tboxes[k])
        layout.Add(self.frame.btn, flag=wx.SHAPED)
        panel_ui.SetSizer(layout)

        self.frame.Show(True)
        self.frame.datas = []
    def Clicked(self,event):
        for i in self.frame.tboxes:
            self.frame.datas.append(i.GetValue())
        self.frame.Close(True)

app = wx.App()
guiobj = GUIinput()
app.SetTopWindow(guiobj.frame)
app.MainLoop()
print(guiobj.frame.datas)

좋은 웹페이지 즐겨찾기