我正在做一个处理远程资源的小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(),它会将元素添加到当前布局...因此两者都显示在同一个地方。
我该如何管理?
感谢这些建议埃纳尔,我修改我的代码,看看结果然后说你怎么回事。 – 2010-11-16 06:39:35
它效果更好:再次感谢! – 2010-11-19 14:53:03