2010-11-13 25 views
1

我正在做一个处理远程资源的小python plasmoid。 下面的代码:glpoidpython plasmoid中的多个布局/布局转换

它提供了一个视图门票的(默认的),可以让用户填充和发送新票,和最后一个看到一票细节视图 ...

我的问题是,我不知道如何“关闭”当前布局,当我传递到另一个视图(或使其消失)。

对于每个布局中,定义,我添加到布局定义和最后我显示新布局项目:

最初,我显示与self.view_tickets_ui()的默认视图。 每个布局定义在name_ui()方法,每个方法重新定义布局并将其传递给小程序。

要恢复是这样的定义:

class GLPIApplet(plasmascript.Applet): 
    def __init__(self,parent,args=None): 
     plasmascript.Applet.__init__(self,parent) 

    def init(self): 
     self.setHasConfigurationInterface(False) 
     self.setAspectRatioMode(Plasma.Square) 
     self.resize(400,650) 
     # new ticket button 
     self.new = Plasma.PushButton() 
     self.new.setText('Nouveau Ticket') 
     self.connect(self.new, SIGNAL('clicked()'), self.new_ticket_ui) 
     # refresh button 
     self.refresh = Plasma.PushButton() 
     self.refresh.setText('Rafraichir') 
     self.connect(self.refresh, SIGNAL('clicked()'), self.view_tickets_ui)  
     # initialize 
     self.view_tickets_ui() 

    def view_tickets_ui(self, message=None): 
     # layout of ticket view 
     self.layout = QGraphicsLinearLayout(Qt.Vertical) 
     self.layout.itemSpacing(3)   
     self.layout.addItem(self.new) 
     self.view_tickets() 
     self.layout.addItem(self.refresh) 
     self.applet.setLayout(self.layout) 

    def new_ticket_ui(self, message=None): 
     # layout of a new ticket 
     self.layout = QGraphicsLinearLayout(Qt.Vertical) 
     self.layout.itemSpacing(3) 
     message_label = Plasma.Label() 
     message_label.setText('the message:')    
     self.layout.addItem(message_label) 
     self.applet.setLayout(self.layout) 

这里初始化只是定义了一些按钮,然后调用view_tickets_ui()是把一些物品,并显示布局。 如果我在之后调用new_ticket_ui(),它会将元素添加到当前布局...因此两者都显示在同一个地方。

我该如何管理?

回答

1

您可以使用带隐藏标签的Plasma.TabBar并在它们之间切换,如IRC上所述。将clicked信号连接到在选项卡之间切换的插槽,一切都应该没问题。

而且,在风格记:你应该使用new signal/slot API尽可能:

self.connect(self.refresh, SIGNAL('clicked()'), self.view_tickets_ui) 

应该成为

self.refresh.clicked.connect(self.view_tickets_ui). 
+0

感谢这些建议埃纳尔,我修改我的代码,看看结果然后说你怎么回事。 – 2010-11-16 06:39:35

+0

它效果更好:再次感谢! – 2010-11-19 14:53:03