Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python plasmoid中的多个布局/布局转换_Python_Kde_Plasma_Plasmoid - Fatal编程技术网

python plasmoid中的多个布局/布局转换

python plasmoid中的多个布局/布局转换,python,kde,plasma,plasmoid,Python,Kde,Plasma,Plasmoid,我正在做一个处理远程资源的小python plasmoid。 代码如下: 它提供了票证的视图(默认视图),允许用户填写和发送新票证,以及最后一个查看票证详细信息的视图 我的问题是,当我传递到另一个视图(或使其消失)时,我不知道如何“关闭”当前布局 对于每个布局,我定义添加到布局定义中的项目,最后显示新布局: 最初,我用self.view\u tickets\u ui()显示默认视图。。 每个布局都在name\u ui()方法中定义,每个方法都重新定义布局并将其传递给小程序 要恢复,定义如下: c

我正在做一个处理远程资源的小python plasmoid。 代码如下:

它提供了票证的视图(默认视图),允许用户填写和发送新票证,以及最后一个查看票证详细信息的视图

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

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

最初,我用self.view\u tickets\u ui()显示默认视图。
。 每个布局都在name\u 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)
这里init只定义一些按钮,然后调用view\u tickets\u ui()来放置一些项目并显示布局。 如果我在之后调用new\u ticket\u ui(),它将向当前布局添加元素。。。所以两者都显示在同一个地方


请告诉我如何管理它???

您可以使用带有隐藏选项卡的
Plasma.TabBar
,并在它们之间切换,如IRC上所述。将单击的
信号连接到在选项卡之间切换的插槽,一切正常

另外,关于样式的注意事项:您应尽可能使用:

self.connect(self.refresh, SIGNAL('clicked()'), self.view_tickets_ui)
应该成为

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

您可以使用带有隐藏选项卡的
Plasma.TabBar
,并在它们之间切换,如IRC中所述。将单击的
信号连接到在选项卡之间切换的插槽,一切正常

另外,关于样式的注意事项:您应尽可能使用:

self.connect(self.refresh, SIGNAL('clicked()'), self.view_tickets_ui)
应该成为

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

感谢这些建议Einar,我正在修改代码以查看结果,然后告诉您进展如何。感谢这些建议Einar,我正在修改代码以查看结果,然后告诉您进展如何。