Я делаю маленький плазмоид Python , который имеет дело с удаленными ресурсами.
Вот код: glpoid
Он предлагает просмотр билетов (по умолчанию), просмотр, который позволяет пользователю заполнять и отправлять новый билет , а последний на видеть Деталь билета ...
Моя проблема в том, что я не знаю, как «закрыть» текущий макет, когда я перехожу на другой вид (или заставить его исчезнуть).
Для каждого макета я определяю элементы, которые добавляю в определение макета, и в последний раз отображаю новый макет:
Изначально я отображаю вид по умолчанию с помощью 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)
Здесь init просто определяет некоторые кнопки, а затем вызывает view_tickets_ui () , которые помещают некоторые элементы и отображают макет.
Если после этого я вызову new_ticket_ui () , он добавит элементы в текущий макет ... так что оба будут отображаться в одном месте.
Как мне это сделать, пожалуйста?