Explorar el Código

Add skeleton of UI layout

Michael Pitidis hace 13 años
padre
commit
a6c86dda73
Se han modificado 1 ficheros con 96 adiciones y 0 borrados
  1. 96 0
      labelme.py

+ 96 - 0
labelme.py

@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+# -*- coding: utf8 -*-
+
+import sys
+
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+
+
+__appname__ = 'labelme'
+
+
+### Utility functions and classes.
+
+def action(parent, text, slot=None, shortcut=None, icon=None,
+           tip=None, checkable=False):
+    """Create a new action and assign callbacks, shortcuts, etc."""
+    a = QAction(text, parent)
+    if icon is not None:
+        a.setIcon(QIcon(u':/%s' % icon))
+    if shortcut is not None:
+        a.setShortcut(shortcut)
+    if tip is not None:
+        a.setToolTip(tip)
+        a.setStatusTip(tip)
+    if slot is not None:
+        a.triggered.connect(slot)
+    if checkable:
+        a.setCheckable(True)
+    return a
+
+def add_actions(widget, actions):
+    for action in actions:
+        if action is None:
+            widget.addSeparator()
+        else:
+            widget.addAction(action)
+
+class WindowMixin(object):
+    def menu(self, title, actions=None):
+        menu = self.menuBar().addMenu(title)
+        if actions:
+            add_actions(menu, actions)
+        return menu
+
+    def toolbar(self, title, actions=None):
+        toolbar = QToolBar(title)
+        toolbar.setObjectName(u'%sToolBar' % title)
+        #toolbar.setOrientation(Qt.Vertical)
+        toolbar.setContentsMargins(0,0,0,0)
+        toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
+        toolbar.layout().setContentsMargins(0,0,0,0)
+        if actions:
+            add_actions(toolbar, actions)
+        self.addToolBar(Qt.LeftToolBarArea, toolbar)
+        return toolbar
+
+
+class MainWindow(QMainWindow, WindowMixin):
+    def __init__(self):
+        super(MainWindow, self).__init__()
+        self.setWindowTitle(__appname__)
+
+        self.setContentsMargins(0, 0, 0, 0)
+
+        # Main widgets.
+        self.label = QLineEdit(u'Hello world, مرحبا ، العالم, Γεια σου κόσμε!')
+        self.dock = QDockWidget(u'Label', parent=self)
+        self.dock.setWidget(self.label)
+
+        self.addDockWidget(Qt.BottomDockWidgetArea, self.dock)
+        self.setCentralWidget(QWidget())
+
+        # Actions
+        quit = action(self, '&Quit', self.close, 'Ctrl+Q', u'Exit application')
+        labl = self.dock.toggleViewAction()
+        labl.setShortcut('Ctrl+L')
+
+        add_actions(self.menu('&File'), (labl, None, quit))
+        add_actions(self.toolbar('Tools'), (labl, None, quit,))
+
+        self.statusBar().showMessage('%s started.' % __appname__)
+        self.statusBar().show()
+
+
+def main(argv):
+    """Standard boilerplate Qt application code."""
+    app = QApplication(argv)
+    app.setApplicationName(__appname__)
+    win = MainWindow()
+    win.show()
+    return app.exec_()
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))
+