2013-04-12 95 views
0

我被要求開發一個類似於任務調度程序中的觸發器窗口的圖形用戶界面。我正在盡我所能去做,並且我被困在一個框架中創建多個面板。下面是快照我的GUI看起來應該如何。請幫助我。Wxpython gui任務調度器

task scheduler

+0

如果「在一個框架中創建多個面板」是一個問題,向我們展示一個基本的簡單示例,說明如何嘗試將多個面板放在一個框架中以及它如何失敗。 – Fenikso

回答

0

下面是我使用的wxPython創建的調度程序窗口。

class SchedulerWindow(wx.Frame): 
""" This generates the GUI for Setting Window""" 
#------------------------------------------------------------------------------------ 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title="Scheduler", style=wx.DEFAULT_FRAME_STYLE^wx.RESIZE_BORDER^wx.MAXIMIZE_BOX, size=(600,500)) 
     panel=wx.Panel(self) 
     sizer = wx.GridBagSizer(5, 5) 
     font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD) 
     self.field = wx.TextCtrl(panel,pos=(65,20),size=(400,20)) 
     field_lbl=wx.StaticText(panel,-1, label='Name:', pos=(20,20)) 
     field_lbl.SetFont(font) 
     line = wx.StaticLine(panel,pos=(0,50), size=(600,1)) 
     #sizer.Add(line, pos=(1,30), span=(1, 5),flag=wx.EXPAND|wx.BOTTOM, border=10) 
     Box=wx.StaticBox(panel,label='Settings',size=(565,200),pos=(15,60)) 
     Box1=wx.StaticBox(panel,label='',size=(430,120),pos=(120,120)) 
     boxsizer = wx.StaticBoxSizer(Box, wx.VERTICAL) 
     boxsizer.Add(wx.RadioButton(panel,label="One time",pos=(25,90)),flag=wx.LEFT|wx.TOP, border=5) 
     boxsizer.Add(wx.RadioButton(panel,label="Daily",pos=(25,110)),flag=wx.LEFT|wx.TOP, border=5) 
     boxsizer.Add(wx.RadioButton(panel,label="Weekly",pos=(25,130)),flag=wx.LEFT|wx.TOP, border=5) 
     boxsizer.Add(wx.RadioButton(panel,label="Monthly",pos=(25,150)),flag=wx.LEFT|wx.TOP, border=5) 
     sizer.Add(boxsizer,pos=(5,10) ,span=(1, 5), 
       flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT , border=10) 
     wx.StaticLine(panel, pos=(100,90), size=(1,100)) 
     start=wx.StaticText(panel, -1, 'Start Date:', pos=(120,90)) 
     Time=wx.StaticText(panel, -1, 'Start Time:', pos=(350, 90)) 
     start.SetFont(font) 
     Time.SetFont(font) 
     Box2=wx.StaticBox(panel,label='Advance Settings',size=(565,200),pos=(15,280)) 
     boxsizer = wx.StaticBoxSizer(Box2, wx.VERTICAL) 
     boxsizer.Add(wx.CheckBox(panel, -1,'Repeat task every', pos=(20,300),size=(200,25))) 

我想在'開始時間:'textctrl中顯示時間。我嘗試使用TimePickerCtrl,但無法使它。我使用'DateCtrl'和Calenderdialog在'開始日期:'textctrl中顯示日曆。期待與example.Thanks

0

我很少看到有必要將多個面板的框架內,除非我做一個wx.Notebook。也許這就是你正在尋找的。 wx.Notebook易於使用,並且wxPython中還包含一系列其他「book」控件。這裏有幾個環節:

如果你確實想在你的框架多個面板,是組織的控制和它們的佈局?我只會使用sizers而不是。 Sizers給你更多的靈活性。這裏有一些信息:

而如果你的意思是你想知道如何在面板之間進行切換,我已經得到了你覆蓋: http://www.blog.pythonlibrary.org/2010/06/16/wxpython-how-to-switch-between-panels/

0

使用sizer來佈置圖片上繪製的控件的位置,大概在sizer所在的位置。

blue = vertical。

green = horizo​​ntal。

enter image description here