def paint_mainWindow(self): # Define and use a "Grid Layout" for the main window. grid = QGridLayout() grid.addWidget(self.textArea, 1, 1) grid.addWidget(self.tabs, 2, 1) # Create central widget, add layout, and set central_widget = QWidget() central_widget.setLayout(grid) self.setCentralWidget(central_widget) # Fun feature for users. If you are going to have a toolbar then you # really need this status bar to show what the icons do. self.statusbar = QStatusBar(self) self.statusbar.setObjectName( "statusbar") MainWindow.setStatusBar(self, self.statusbar) self.statusbar.show() # Initial settings for the main window # # Set the Main Window Geometry top = 100 # Main Window initial 'top' position (as pixels from top of screen) left = 100 # Main Window initial 'left' position (as pixels from left side of screen) width = 1000 # Main Window initial 'width' (as pixels) height = 700 # Main Window initial 'height' (as pixels) self.setGeometry(QRect(top, left, width, height)) # Create connection(s) # If the contents of the text area are changed then call a function # to set the appropriate file menu state. This file menu state can # also be used to ensure clean exits. In english, keep track # of changes to the text editor. It affects the "state" of the # application. See setState() self.connect(self.textArea, SIGNAL("textChanged()"), self.textChanged)
def __init__(self, scene, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) # self.windowTitleChanged.connect(self.onWindowTitleChange) self.setWindowTitle("timeline unit test") # toolbar = QToolBar("och") # toolbar.setIconSize(QSize(20,20)) # self.addToolBar(toolbar) # button_action = QAction(QIcon("balance.png"), "ochtuse", self) # button_action.setStatusTip("och, just do something") # button_action.triggered.connect(self.onMyToolBarButtonClick) # button_action.setCheckable(True) # # button_action.setShortcut(QKeySequence("Ctrl+p")) # # button_action.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_P)) # button_action.setShortcut(QKeySequence.Print) # toolbar.addAction(button_action) # toolbar.addWidget(QLabel("OCH")) # toolbar.addWidget(QCheckBox()) self.setStatusBar(QStatusBar(self)) menu = self.menuBar() file_menu = menu.addMenu("&File") # file_menu.addAction(button_action) # file_menu.addSeparator() file_menu.addMenu("Do not push") # file_menu.addAction() self._scene = scene gfx = self._gfx = QFramesInTracksView(self) # label = QLabel("och!") # label.setAlignment(Qt.AlignCenter) # ref https://doc.qt.io/archives/qq/qq26-openglcanvas.html self.setCentralWidget(gfx) scene.setSceneRect(QRectF(0, 0, 800, 600)) gfx.setScene(scene) # populate fills the scene with interesting stuff. # self.populate() # Make it bigger # self.setWindowState(Qt.WindowMaximized) # Well... it's going to have an animation, ok? # So, I set a timer to 1 second # self.animator=QTimer() # And when it triggers, it calls the animate method # self.animator.timeout.connect(self.animate) # And I animate it once manually. # self.animate() self.show() self.raise_()
def __init__(self): super().__init__() self.__central_widget = CentralWidget(None) self.__board = self.__central_widget.board self.__nodes_view = self.__central_widget.nodes_widget self.__status_bar = QStatusBar() self.setCentralWidget(self.__central_widget) self.setStatusBar(self.__status_bar) self.setMinimumSize(self.__central_widget.size()) self.__board.on_click.connect(self.on_piece_click) self.__nodes_view.node_click.connect(self.on_point_click) self.__central_widget.button_bar.open_click.connect(self.on_open_click) self.__central_widget.button_bar.save_click.connect(self.on_save_click) self.__central_widget.button_bar.pass_click.connect(self.on_pass_click) self.__central_widget.button_bar.resign_click.connect( self.on_resign_click) self.__central_widget.button_bar.count_click.connect( self.on_count_click) self.__status_bar.showMessage("Juego cargado.")
def __init__(self, parent=None): super(TestDlg, self).__init__(parent) self.mymodel = None self.myscene = DragEnabledScene(QRectF(-400,-300,800,600)) self.myview = QGraphicsView() self.myview.setScene(self.myscene) self.myfile = None layout = QVBoxLayout() layout.addWidget(self.myview) buttonLayout = QHBoxLayout() self.savebutton = QPushButton('Save') self.loadbutton = QPushButton('Load') self.renderbutton = QPushButton('Accept') buttonLayout.addWidget(self.savebutton) buttonLayout.addWidget(self.loadbutton) buttonLayout.addWidget(self.renderbutton) layout.addLayout(buttonLayout) self.statusbar = QStatusBar() layout.addWidget(self.statusbar) self.statusbar.showMessage("Ready.",2000) self.setLayout(layout) self.loadfromInitData() self.savebutton.pressed.connect(self.saveMatrix) self.loadbutton.pressed.connect(self.loadMatrix) self.myscene.selectionChanged.connect(self.updateStatus) self.myscene.modelchanged.connect(self.changeModel) self.renderbutton.pressed.connect(self.testDistance)
def setupUi(self, MainWindow): """ """ MainWindow.resize(100,200) # Create the "Central Widget" and add a "Layout" self.centralwidget = QWidget(MainWindow) MainWindow.setCentralWidget(self.centralwidget) self.verticalLayout= QVBoxLayout(self.centralwidget) # Add a Temperature sensor and Label Widgets self.t1 = QFellesThermocouple(self.centralwidget) self.label = QLabel(self.centralwidget) self.label.setText("[C]") # Add Widgets to Layout self.verticalLayout.addWidget(self.t1) self.verticalLayout.addWidget(self.label) # Add connections self.t1.measurement_updated.connect(self.label.setText) # Create the Menu bar self.menubar = QMenuBar(MainWindow) MainWindow.setMenuBar(self.menubar) # Create the Status Bar self.statusbar = QStatusBar(MainWindow) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow)
def __init__(self, showEmptyDatasetNodes=False, parent=None): """Constructor.""" super(Visor, self).__init__(parent) self.setupUi(self) self.controller = VisorController.VisorController() self.controller.threddsServerMapObjectRetrieved.connect( self.onNewDatasetsAvailable) self.controller.threddsDataSetUpdated.connect(self.onDataSetUpdated) self.controller.mapImageRetrieved.connect(self.showNewImage) self.controller.standardMessage.connect( self.postInformationMessageToUser) self.controller.errorMessage.connect(self.postCriticalErrorToUser) self.controller.mapInfoRetrieved.connect( self._onMapInfoReceivedFromController) self.controller.batchDownloadFinished.connect(self.createLayerGroup) self.showEmptyDatasetNodes = showEmptyDatasetNodes # TODO: self-explanatory... self.combo_dataset_list.currentIndexChanged.connect( self._onDataSetItemChanged) self.tree_widget.itemClicked.connect(self._onMapTreeWidgetItemClicked) self.tree_widget.itemExpanded.connect( self._onMapTreeWidgetItemExpanded) self.tabWidget.currentChanged.connect(self.runWhenTabChange) self.connect(self.combo_wcs_coverage, SIGNAL("currentIndexChanged(const QString&)"), self._onCoverageSelectorItemChanged) self.connect(self.combo_wms_layer, SIGNAL("currentIndexChanged(const QString&)"), self._onWMSLayerSelectorItemChanged) self.connect(self.combo_wms_style_type, SIGNAL("currentIndexChanged(const QString&)"), self._onWMSStyleTypeSelectorItemChanged) self.connect(self.combo_wms_time, SIGNAL("currentIndexChanged(int)"), self._onWMSFirstTimeChanged) self.connect(self.combo_wcs_time, SIGNAL("currentIndexChanged(int)"), self._onWCSFirstTimeChanged) self.button_req_map.clicked.connect(self._onbuttonReqMapClicked) #self.actionToggleAlwaysOnTop.toggled.connect(self._onAlwaysOnTopPrefsChanged) self.buttonManageServers.clicked.connect( self._onManageServersRequested) self.button_req_animation.clicked.connect(self.toggleAnimationMenu) # We add a status bar to this QDockWidget: self.statusbar = QStatusBar() self.gridLayout.addWidget(self.statusbar) self.datasetInUse = None self.uiAnimation = None self.currentMap = None self.wcsAvailableTimes = [] self.wmsAvailableTimes = [] self.firstRunThisSession = True
def __init__(self, parent, configuration): QWidget.__init__(self, parent) self._configuration = configuration layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) main_widget = QWidget(self) self._layout_main = QVBoxLayout() self._layout_main.setContentsMargins(0, 0, 0, 0) self._layout_main.setSpacing(6) main_widget.setLayout(self._layout_main) layout.addWidget(main_widget) self._status_bar = QStatusBar() layout.addWidget(self._status_bar) self.setLayout(layout)
def init_ui(self): wtitle = "Teigen " + self.version self.setWindowTitle(wtitle) self.mainLayout = QGridLayout(self) self.statusBar = QStatusBar() self.mainLayout.addWidget(self.statusBar, 10, 0, 1, 2) self.progressBar = QtGui.QProgressBar() self.progressBar.setRange(0, 10000) self.progressBar.setValue(0) self.ui_stop_button = QPushButton("Stop", self) self.ui_stop_button.clicked.connect(self.btnStop) self.statusBar.addWidget(self.progressBar) self.statusBar.addWidget(self.ui_stop_button) self.progressBar.show() self.configBarLayout = QGridLayout(self) self._ui_config_init()
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.dirty = False self.setObjectName("MainWindow") self.resize(800, 600) self.setWindowTitle("GA") # TODO # TODO app_icon = get_icon('OpenFisca22.png') # self.setWindowIcon(app_icon) self.setLocale(QLocale(QLocale.French, QLocale.France)) self.setDockOptions(QMainWindow.AllowNestedDocks | QMainWindow.AllowTabbedDocks | QMainWindow.AnimatedDocks) self.centralwidget = QWidget(self) self.gridLayout = QGridLayout(self.centralwidget) self.setCentralWidget(self.centralwidget) self.centralwidget.hide() self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) # Showing splash screen pixmap = QPixmap(':/images/splash.png', 'png') self.splash = QSplashScreen(pixmap) font = self.splash.font() font.setPixelSize(10) self.splash.setFont(font) self.splash.show() self.splash.showMessage( "Initialisation...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) # if CONF.get('main', 'current_version', '') != __version__: # CONF.set('main', 'current_version', __version__) # Execute here the actions to be performed only once after # each update (there is nothing there for now, but it could # be useful some day... self.start()
def addWidgets(self): layout = QVBoxLayout() self.setLayout(layout) layout.setSpacing(0) layout.setContentsMargins(0, 0, 0, 0) hbox = QHBoxLayout() hbox.setSpacing(4) hbox.setContentsMargins(8, 8, 8, 2) searchbox = SearchEditor() hbox.addWidget(searchbox) self.searchbox = searchbox menu = MenuButton(self) hbox.addWidget(menu) layout.addLayout(hbox) pwview = VaultView(self) searchbox.textChanged.connect(pwview.setSearchQuery) pwview.currentVaultChanged.connect(searchbox.currentVaultChanged) pwview.currentVaultItemCountChanged.connect( searchbox.currentVaultItemCountChanged) layout.addWidget(pwview) self.pwview = pwview hbox = QHBoxLayout() addbutton = AddButton() pwview.currentVaultChanged.connect(addbutton.currentVaultChanged) hbox.addWidget(addbutton) frame = QFrame() frame.setFrameStyle(QFrame.VLine | QFrame.Raised) frame.setLineWidth(1) frame.setFixedHeight(26) hbox.addWidget(frame) statusbar = QStatusBar() hbox.addWidget(statusbar) self.statusbar = statusbar self.sink = QWidget() self.sink.setFocusPolicy(Qt.ClickFocus) self.sink.resize(0, 0) hbox.addWidget(self.sink) layout.addLayout(hbox)
def setupUi(self, MainWindow): """ """ MainWindow.resize(100, 200) #Create central widget and add a Layout self.centralwidget = QWidget(MainWindow) MainWindow.setCentralWidget(self.centralwidget) self.verticalLayout = QVBoxLayout(self.centralwidget) # Add a Temperature sensor and Label Widgets self.t1 = QFellesController(self.centralwidget) # Add Widgets to Layout self.verticalLayout.addWidget(self.t1) # Create the Menu bar self.menubar = QMenuBar(MainWindow) MainWindow.setMenuBar(self.menubar) # Create the Status Bar self.statusbar = QStatusBar(MainWindow) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow)
def initUI(self, shape, vscale, height=600, mode='seed'): """ Initialize UI. Parameters ---------- shape : (int, int, int) Shape of data matrix. vscale : (float, float, float) Voxel scaling. height : int Maximal slice height in pixels. mode : str Editor mode. """ # picture grid = height / float(shape[1] * vscale[1]) mgrid = (grid * vscale[0], grid * vscale[1]) self.slice_box = SliceBox(shape[:-1], mgrid, mode) self.slice_box.setScrollFun(self.scrollSlices) self.connect(self.slice_box, SIGNAL('focus_slider'), self.focusSliceSlider) # sliders self.allow_select_slice = True self.n_slices = shape[2] self.slider = QSlider(Qt.Vertical) self.slider.label = QLabel() self.slider.label.setText('Slice: %d / %d' % (self.actual_slice, self.n_slices)) self.slider.setRange(1, self.n_slices) self.slider.valueChanged.connect(self.sliderSelectSlice) self.slider.setValue(self.actual_slice) self.slider_cw = {} self.slider_cw['c'] = QSlider(Qt.Horizontal) self.slider_cw['c'].valueChanged.connect(self.changeC) self.slider_cw['c'].label = QLabel() self.slider_cw['w'] = QSlider(Qt.Horizontal) self.slider_cw['w'].valueChanged.connect(self.changeW) self.slider_cw['w'].label = QLabel() self.view_label = QLabel('View size: %d x %d' % self.img_aview.shape[:-1]) self.voxel_label = QLabel('Voxel size [mm]:\n %.2f x %.2f x %.2f'\ % tuple(self.voxel_size[np.array(self.act_transposition)])) combo_view_options = VIEW_TABLE.keys() combo_view = QComboBox(self) combo_view.activated[str].connect(self.setView) combo_view.addItems(combo_view_options) # buttons self.btn_quit = QPushButton("Return", self) self.btn_quit.clicked.connect(self.quit) combo_dmask = QComboBox(self) combo_dmask.activated.connect(self.changeMask) self.mask_points_tab, aux = self.init_draw_mask(DRAW_MASK, mgrid) for icon, label in aux: combo_dmask.addItem(icon, label) self.slice_box.setMaskPoints( self.mask_points_tab[combo_dmask.currentIndex()]) self.status_bar = QStatusBar() self.seeds_copy = None vopts = [] vmenu = [] appmenu = [] if mode == 'seed' and self.mode_fun is not None: btn_recalc = QPushButton("Recalculate", self) btn_recalc.clicked.connect(self.recalculate) self.btn_save = QPushButton("Save seeds", self) self.btn_save.clicked.connect(self.saveload_seeds) btn_s2b = QPushButton("Seg. to bckgr.", self) btn_s2b.clicked.connect(self.seg_to_background_seeds) btn_s2f = QPushButton("Seg. to forgr.", self) btn_s2f.clicked.connect(self.seg_to_foreground_seeds) appmenu.append( QLabel('<b>Segmentation mode</b><br><br><br>' + 'Select the region of interest<br>' + 'using the mouse buttons:<br><br>' + ' <i>left</i> - inner region<br>' + ' <i>right</i> - outer region<br><br>')) appmenu.append(btn_recalc) appmenu.append(self.btn_save) appmenu.append(btn_s2f) appmenu.append(btn_s2b) appmenu.append(QLabel()) self.volume_label = QLabel('Volume:\n unknown') appmenu.append(self.volume_label) # Set middle pencil as default (M. Jirik) combo_dmask.setCurrentIndex(1) self.slice_box.setMaskPoints( self.mask_points_tab[combo_dmask.currentIndex()]) # -----mjirik---end------ if mode == 'seed' or mode == 'crop'\ or mode == 'mask' or mode == 'draw': combo_seed_label_options = ['all', '1', '2', '3', '4'] combo_seed_label = QComboBox(self) combo_seed_label.activated[str].connect(self.changeFocusedLabel) combo_seed_label.addItems(combo_seed_label_options) self.changeFocusedLabel( combo_seed_label_options[combo_seed_label.currentIndex()]) # vopts.append(QLabel('Label to delete:')) # vopts.append(combo_seed_label) vmenu.append(QLabel('Label to delete:')) vmenu.append(combo_seed_label) btn_del = QPushButton("Del Slice Seeds", self) btn_del.clicked.connect(self.deleteSliceSeeds) vmenu.append(None) vmenu.append(btn_del) btn_del = QPushButton("Del All Seeds", self) btn_del.clicked.connect(self.deleteSeedsInAllImage) vmenu.append(None) vmenu.append(btn_del) combo_contour_options = ['fill', 'contours', 'off'] combo_contour = QComboBox(self) combo_contour.activated[str].connect(self.changeContourMode) combo_contour.addItems(combo_contour_options) self.changeContourMode( combo_contour_options[combo_contour.currentIndex()]) vopts.append(QLabel('Selection mode:')) vopts.append(combo_contour) if mode == 'mask': btn_recalc_mask = QPushButton("Recalculate mask", self) btn_recalc_mask.clicked.connect(self.updateMaskRegion_btn) btn_all = QPushButton("Select all", self) btn_all.clicked.connect(self.maskSelectAll) btn_reset = QPushButton("Reset selection", self) btn_reset.clicked.connect(self.resetSelection) btn_reset_seads = QPushButton("Reset seads", self) btn_reset_seads.clicked.connect(self.resetSeads) btn_add = QPushButton("Add selection", self) btn_add.clicked.connect(self.maskAddSelection) btn_rem = QPushButton("Remove selection", self) btn_rem.clicked.connect(self.maskRemoveSelection) btn_mask = QPushButton("Mask region", self) btn_mask.clicked.connect(self.maskRegion) appmenu.append( QLabel('<b>Mask mode</b><br><br><br>' + 'Select the region to mask<br>' + 'using the left mouse button<br><br>')) appmenu.append(self.get_line('h')) appmenu.append(btn_recalc_mask) appmenu.append(btn_all) appmenu.append(btn_reset) appmenu.append(btn_reset_seads) appmenu.append(self.get_line('h')) appmenu.append(btn_add) appmenu.append(btn_rem) appmenu.append(self.get_line('h')) appmenu.append(btn_mask) appmenu.append(self.get_line('h')) self.mask_qhull = None if mode == 'crop': btn_crop = QPushButton("Crop", self) btn_crop.clicked.connect(self.crop) appmenu.append( QLabel('<b>Crop mode</b><br><br><br>' + 'Select the crop region<br>' + 'using the left mouse button<br><br>')) appmenu.append(btn_crop) if mode == 'draw': appmenu.append( QLabel('<b>Manual segmentation<br> mode</b><br><br><br>' + 'Mark the region of interest<br>' + 'using the mouse buttons:<br><br>' + ' <i>left</i> - draw<br>' + ' <i>right</i> - erase<br>' + ' <i>middle</i> - vol. erase<br><br>')) btn_reset = QPushButton("Reset", self) btn_reset.clicked.connect(self.resetSliceDraw) vmenu.append(None) vmenu.append(btn_reset) combo_erase_options = ['inside', 'outside'] combo_erase = QComboBox(self) combo_erase.activated[str].connect(self.changeEraseMode) combo_erase.addItems(combo_erase_options) self.changeEraseMode( combo_erase_options[combo_erase.currentIndex()]) vopts.append(QLabel('Volume erase mode:')) vopts.append(combo_erase) hbox = QHBoxLayout() vbox = QVBoxLayout() vbox_left = QVBoxLayout() vbox_app = QVBoxLayout() hbox.addWidget(self.slice_box) hbox.addWidget(self.slider) vbox_left.addWidget(self.slider.label) vbox_left.addWidget(self.view_label) vbox_left.addWidget(self.voxel_label) vbox_left.addWidget(QLabel()) vbox_left.addWidget(QLabel('View plane:')) vbox_left.addWidget(combo_view) vbox_left.addWidget(self.get_line()) vbox_left.addWidget(self.slider_cw['c'].label) vbox_left.addWidget(self.slider_cw['c']) vbox_left.addWidget(self.slider_cw['w'].label) vbox_left.addWidget(self.slider_cw['w']) vbox_left.addWidget(self.get_line()) vbox_left.addWidget(QLabel('Drawing mask:')) vbox_left.addWidget(combo_dmask) for ii in vopts: vbox_left.addWidget(ii) for ii in vmenu: if ii is None: vbox_left.addStretch(1) else: vbox_left.addWidget(ii) for ii in appmenu: if ii is None: vbox_app.addStretch(1) else: vbox_app.addWidget(ii) vbox_app.addStretch(1) vbox_app.addWidget(self.btn_quit) hbox.addLayout(vbox_left) hbox.addWidget(self.get_line('v')) hbox.addLayout(vbox_app) vbox.addLayout(hbox) vbox.addWidget(self.status_bar) self.my_layout = vbox self.setLayout(vbox) self.setWindowTitle('Segmentation Editor') self.show()
def __init__(self, settings, parent=None): super(MikiWindow, self).__init__(parent) self.setObjectName("mikiWindow") self.settings = settings self.notePath = settings.notePath lockPath = os.path.join(settings.notebookPath, '.mikidown_lock') if not os.path.exists(lockPath): self.lockPathFH = os.open(lockPath, os.O_CREAT | os.O_EXCL | os.O_RDWR) ################ Setup core components ################ self.notesTree = MikiTree(self) self.quickNoteNav = QLineEdit() self.notesTab = QWidget() self.completer = SlashPleter() self.completer.setModel(self.notesTree.model()) self.quickNoteNav.setCompleter(self.completer) self.notesTree.setObjectName("notesTree") self.initTree(self.notePath, self.notesTree) self.notesTree.sortItems(0, Qt.AscendingOrder) self.ix = None self.setupWhoosh() self.viewedList = QToolBar(self.tr('Recently Viewed'), self) self.viewedList.setIconSize(QSize(16, 16)) self.viewedList.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.viewedListActions = [] self.noteSplitter = QSplitter(Qt.Horizontal) self.dockIndex = QDockWidget(self.tr("Index")) self.dockSearch = QDockWidget(self.tr("Search")) self.searchEdit = QLineEdit() self.searchView = MikiSearch(self) self.searchTab = QWidget() self.dockToc = QDockWidget(self.tr("TOC")) self.tocTree = TocTree() self.dockAttachment = QDockWidget(self.tr("Attachment")) self.attachmentView = AttachmentView(self) self.notesEdit = MikiEdit(self) self.notesEdit.setObjectName(self.tr("notesEdit")) self.loadHighlighter() self.notesView = MikiView(self) self.findBar = QToolBar(self.tr('Find'), self) self.findBar.setFixedHeight(30) self.findEdit = QLineEdit(self.findBar) self.checkBox = QCheckBox(self.tr('Match case'), self.findBar) self.statusBar = QStatusBar(self) self.statusLabel = QLabel(self) self.altPressed = False ################ Setup actions ################ self.actions = dict() self.setupActions() ################ Setup mainwindow ################ self.setupMainWindow() # show changelogs after upgrade mikidown if self.settings.version < __version__ or Mikibook.settings.value( "version", defaultValue="0") < __version__: self.changelogHelp() self.settings.qsettings.setValue("version", __version__) Mikibook.settings.setValue("version", __version__)
def insertLayout(self): def createPixmapWidget(self, parent, iconName): w = QLabel(parent) parent.layout().addWidget(w) w.setFixedSize(16, 16) w.hide() if os.path.exists(iconName): w.setPixmap(QPixmap(iconName)) return w self.setLayout(QVBoxLayout()) self.layout().setMargin(2) self.warning_bar = gui.widgetBox(self, orientation="horizontal", margin=0, spacing=0) self.warning_icon = gui.widgetLabel(self.warning_bar, "") self.warning_label = gui.widgetLabel(self.warning_bar, "") self.warning_label.setStyleSheet("padding-top: 5px") self.warning_bar.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Maximum) gui.rubber(self.warning_bar) self.warning_bar.setVisible(False) self.want_main_area = self.graph_name is not None or self.want_main_area splitter = self.Splitter(Qt.Horizontal, self) self.layout().addWidget(splitter) if self.want_control_area: self.controlArea = gui.widgetBox(splitter, orientation="vertical", margin=0) splitter.setSizes([1]) # Results in smallest size allowed by policy if self.graph_name is not None or hasattr(self, "send_report"): leftSide = self.controlArea self.controlArea = gui.widgetBox(leftSide, margin=0) if self.graph_name is not None: self.graphButton = gui.button(leftSide, None, "&Save Graph") self.graphButton.clicked.connect(self.save_graph) self.graphButton.setAutoDefault(0) if hasattr(self, "send_report"): self.report_button = gui.button(leftSide, None, "&Report", callback=self.show_report) self.report_button.setAutoDefault(0) if self.want_main_area: self.controlArea.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding) self.controlArea.layout().setContentsMargins(4, 4, 0 if self.want_main_area else 4, 4) if self.want_main_area: self.mainArea = gui.widgetBox(splitter, orientation="vertical", margin=4, sizePolicy=QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) splitter.setCollapsible(1, False) self.mainArea.layout().setContentsMargins(0 if self.want_control_area else 4, 4, 4, 4) if self.want_status_bar: self.widgetStatusArea = QFrame(self) self.statusBarIconArea = QFrame(self) self.widgetStatusBar = QStatusBar(self) self.layout().addWidget(self.widgetStatusArea) self.widgetStatusArea.setLayout(QHBoxLayout(self.widgetStatusArea)) self.widgetStatusArea.layout().addWidget(self.statusBarIconArea) self.widgetStatusArea.layout().addWidget(self.widgetStatusBar) self.widgetStatusArea.layout().setMargin(0) self.widgetStatusArea.setFrameShape(QFrame.StyledPanel) self.statusBarIconArea.setLayout(QHBoxLayout()) self.widgetStatusBar.setSizeGripEnabled(0) self.statusBarIconArea.hide() self._warningWidget = createPixmapWidget( self.statusBarIconArea, gui.resource_filename("icons/triangle-orange.png")) self._errorWidget = createPixmapWidget( self.statusBarIconArea, gui.resource_filename("icons/triangle-red.png")) if not self.resizing_enabled: self.layout().setSizeConstraint(QVBoxLayout.SetFixedSize)
def initUI(self, shape, vscale, height=600, mode='seed'): """ Initialize UI. Parameters ---------- shape : (int, int, int) Shape of data matrix. vscale : (float, float, float) Voxel scaling. height : int Maximal slice height in pixels. mode : str Editor mode. """ self.slab = {} # picture grid = height / float(shape[1] * vscale[1]) mgrid = (grid * vscale[0], grid * vscale[1]) self.slice_box = SliceBox(shape[:-1], mgrid, mode) self.slice_box.setScrollFun(self.scrollSlices) self.connect(self.slice_box, SIGNAL('focus_slider'), self.focusSliceSlider) # sliders self.allow_select_slice = True self.n_slices = shape[2] self.slider = QSlider(Qt.Vertical) self.slider.valueChanged.connect(self.sliderSelectSlice) self.slider.label = QLabel() self.slider.setRange(1, self.n_slices) self.slider_cw = {} self.slider_cw['c'] = QSlider(Qt.Horizontal) self.slider_cw['c'].valueChanged.connect(self.changeC) self.slider_cw['c'].label = QLabel() self.slider_cw['w'] = QSlider(Qt.Horizontal) self.slider_cw['w'].valueChanged.connect(self.changeW) self.slider_cw['w'].label = QLabel() self.view_label = QLabel('View size: %d x %d' % self.img_aview.shape[:-1]) self.voxel_label = QLabel('Voxel size [mm]:\n %.2f x %.2f x %.2f'\ % tuple(self.voxel_size[np.array(self.act_transposition)])) # combo_view_options = VIEW_TABLE.keys() # combo_view = QComboBox(self) # combo_view.activated[str].connect(self.setView) # combo_view.addItems(combo_view_options) #radio button group for choosing seed class ------------------------ self.current_class = 1 self.slice_box.seed_mark = self.current_class number_group = QGroupBox(QString('Class markers')) vbox_NG = QVBoxLayout() r1 = QRadioButton('class 1') r1.setStyleSheet('QRadioButton {color: red}') r1.setChecked(True) r2 = QRadioButton('class 2') r2.setStyleSheet('QRadioButton {color: green}') r3 = QRadioButton('class 3') r3.setStyleSheet('QRadioButton {color: blue}') r4 = QRadioButton('class 4') r4.setStyleSheet('QRadioButton {color: cyan}') r5 = QRadioButton('class 5') r5.setStyleSheet('QRadioButton {color: magenta}') vbox_NG.addWidget(r1) vbox_NG.addWidget(r2) vbox_NG.addWidget(r3) vbox_NG.addWidget(r4) vbox_NG.addWidget(r5) number_group.setLayout(vbox_NG) self.button_group = QButtonGroup() self.button_group.addButton(r1, 1) self.button_group.addButton(r2, 2) self.button_group.addButton(r3, 3) self.button_group.addButton(r4, 4) self.button_group.addButton(r5, 5) self.connect(self.button_group, SIGNAL("buttonClicked(int)"), self.change_seed_class) #------------------------------------------------------------------- # buttons # btn_save = QPushButton('Save', self) # btn_save.clicked.connect(self.save) btn_quit = QPushButton("Quit", self) btn_quit.clicked.connect(self.quit) # btn_crop = QPushButton('Crop', self) # btn_crop.clicked.connect(self.crop) combo_dmask = QComboBox(self) combo_dmask.activated.connect(self.changeMask) self.mask_points_tab, aux = self.init_draw_mask(DRAW_MASK, mgrid) for icon, label in aux: combo_dmask.addItem(icon, label) self.slice_box.setMaskPoints( self.mask_points_tab[combo_dmask.currentIndex()]) self.status_bar = QStatusBar() vopts = [] vmenu = [] appmenu = [] # btn_recalc = QPushButton("Recalculate", self) # btn_recalc.clicked.connect(self.recalculate) # appmenu.append(QLabel('<b>Segmentation mode</b><br><br><br>' + # 'Select the region of interest<br>' + # 'using the mouse buttons.<br><br>')) # appmenu.append(btn_recalc) # appmenu.append(QLabel()) # self.volume_label = QLabel('Volume [mm3]:\n unknown') # appmenu.append(self.volume_label) # btn_crop = QPushButton("Crop", self) # btn_crop.clicked.connect(self.crop) # appmenu.append(btn_crop) btn_save = QPushButton("Save Seeds", self) btn_save.clicked.connect(self.saveSeeds) appmenu.append(btn_save) btn_del = QPushButton("Delete Seeds", self) btn_del.clicked.connect(self.deleteSliceSeeds) appmenu.append(btn_del) # combo_contour_options = ['fill', 'contours', 'off'] # combo_contour = QComboBox(self) # combo_contour.activated[str].connect(self.changeContourMode) # combo_contour.addItems(combo_contour_options) # self.changeContourMode(combo_contour_options[combo_contour.currentIndex()]) # vopts.append(QLabel('Selection mode:')) # vopts.append(combo_contour) # btn_reset = QPushButton("Reset Seeds", self) # btn_reset.clicked.connect(self.resetSliceDraw) # # appmenu.append(None) # appmenu.append(btn_reset) hbox = QHBoxLayout() vbox = QVBoxLayout() vbox_left = QVBoxLayout() vbox_app = QVBoxLayout() hbox.addWidget(self.slice_box) hbox.addWidget(self.slider) vbox_left.addWidget(self.slider.label) vbox_left.addWidget(self.view_label) vbox_left.addWidget(self.voxel_label) # vbox_left.addWidget(QLabel()) # vbox_left.addWidget(QLabel('View plane:')) # vbox_left.addWidget(combo_view) vbox_left.addWidget(self.get_line()) vbox_left.addWidget(self.slider_cw['c'].label) vbox_left.addWidget(self.slider_cw['c']) vbox_left.addWidget(self.slider_cw['w'].label) vbox_left.addWidget(self.slider_cw['w']) vbox_left.addWidget(self.get_line()) vbox_left.addWidget(QLabel('Drawing mask:')) vbox_left.addWidget(combo_dmask) for ii in vopts: vbox_left.addWidget(ii) for ii in vmenu: if ii is None: vbox_left.addStretch(1) else: vbox_left.addWidget(ii) for ii in appmenu: if ii is None: vbox_app.addStretch(1) else: vbox_app.addWidget(ii) vbox_left.addWidget(self.get_line()) vbox_left.addWidget(number_group) # vbox_app.addWidget(btn_crop) vbox_app.addStretch(1) # vbox_app.addWidget(btn_save) vbox_app.addWidget(btn_quit) hbox.addLayout(vbox_left) hbox.addWidget(self.get_line('v')) hbox.addLayout(vbox_app) vbox.addLayout(hbox) vbox.addWidget(self.status_bar) self.setLayout(vbox) self.setWindowTitle('Seed Editor') self.show()
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.dirty = False self.isLoaded = False self.calibration_enabled = False self.aggregate_enabled = False self.setObjectName("MainWindow") self.resize(800, 600) self.setWindowTitle("OpenFisca") app_icon = get_icon('OpenFisca22.png') self.setWindowIcon(app_icon) self.setLocale(QLocale(QLocale.French, QLocale.France)) self.setDockOptions(QMainWindow.AllowNestedDocks | QMainWindow.AllowTabbedDocks | QMainWindow.AnimatedDocks) self.centralwidget = QWidget(self) self.gridLayout = QGridLayout(self.centralwidget) self.setCentralWidget(self.centralwidget) self.centralwidget.hide() self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) # Showing splash screen pixmap = QPixmap(':/images/splash.png', 'png') self.splash = QSplashScreen(pixmap) font = self.splash.font() font.setPixelSize(10) self.splash.setFont(font) self.splash.show() self.splash.showMessage( "Initialisation...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) # if CONF.get('main', 'current_version', '') != __version__: # CONF.set('main', 'current_version', __version__) # Execute here the actions to be performed only once after # each update (there is nothing there for now, but it could # be useful some day... self.scenario = Scenario() # Preferences self.general_prefs = [SimConfigPage, PathConfigPage, CalConfigPage] self.oldXAXIS = 'sal' self.reforme = False self.apply_settings() # Dockwidgets creation self.splash.showMessage( "Creating widgets...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) self.create_dockwidgets() self.populate_mainwidow() ################################################################# ## Menu initialization ################################################################# self.splash.showMessage( "Creating menubar...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) # Menu Fichier self.file_menu = self.menuBar().addMenu("Fichier") action_export_png = create_action(self, 'Exporter le graphique', icon='document-save png.png', triggered=self._graph.save_figure) action_export_csv = create_action(self, 'Exporter la table', icon='document-save csv.png', triggered=self._table.saveCsv) action_pref = create_action(self, u'Préférences', QKeySequence.Preferences, icon='preferences-desktop.png', triggered=self.edit_preferences) action_quit = create_action(self, 'Quitter', QKeySequence.Quit, icon='process-stop.png', triggered=SLOT('close()')) file_actions = [ action_export_png, action_export_csv, None, action_pref, None, action_quit ] add_actions(self.file_menu, file_actions) # Menu Edit self.edit_menu = self.menuBar().addMenu(u"Édition") action_copy = create_action(self, 'Copier', QKeySequence.Copy, triggered=self.global_callback, data='copy') edit_actions = [None, action_copy] add_actions(self.edit_menu, edit_actions) # Menu Simulation self.simulation_menu = self.menuBar().addMenu(u"Simulation") self.action_refresh_bareme = create_action( self, u'Calculer barèmes', shortcut='F9', icon='calculator_green.png', triggered=self.refresh_bareme) self.action_refresh_aggregate = create_action( self, u'Calculer aggrégats', shortcut='F10', icon='calculator_blue.png', triggered=self.refresh_aggregate) self.action_calibrate = create_action(self, u'Caler les poids', shortcut='CTRL+K', icon='scale22.png', triggered=self.calibrate) action_bareme = create_action(self, u'Barème', icon='bareme22.png', toggled=self.modeBareme) action_cas_type = create_action(self, u'Cas type', icon='castype22.png', toggled=self.modeCasType) action_mode_reforme = create_action( self, u'Réforme', icon='comparison22.png', toggled=self.modeReforme, tip= u"Différence entre la situation simulée et la situation actuelle") mode_group = QActionGroup(self) mode_group.addAction(action_bareme) mode_group.addAction(action_cas_type) self.mode = 'bareme' action_bareme.trigger() simulation_actions = [ self.action_refresh_bareme, self.action_refresh_aggregate, None, self.action_calibrate, None, action_bareme, action_cas_type, None, action_mode_reforme ] add_actions(self.simulation_menu, simulation_actions) # Menu Help help_menu = self.menuBar().addMenu("&Aide") action_about = create_action(self, u"&About OpenFisca", triggered=self.helpAbout) action_help = create_action(self, "&Aide", QKeySequence.HelpContents, triggered=self.helpHelp) help_actions = [action_about, action_help] add_actions(help_menu, help_actions) # Display Menu view_menu = self.createPopupMenu() view_menu.setTitle("&Affichage") self.menuBar().insertMenu(help_menu.menuAction(), view_menu) # Toolbar self.main_toolbar = self.create_toolbar(u"Barre d'outil", 'main_toolbar') toolbar_actions = [ action_export_png, action_export_csv, None, self.action_refresh_bareme, self.action_refresh_aggregate, None, self.action_calibrate, None, action_bareme, action_cas_type, None, action_mode_reforme ] add_actions(self.main_toolbar, toolbar_actions) self.connect(self._menage, SIGNAL('changed()'), self.changed_bareme) self.connect(self._parametres, SIGNAL('changed()'), self.changed_param) self.connect(self._aggregate_output, SIGNAL('calculated()'), self.calculated) self.connect(self, SIGNAL('weights_changed()'), self.refresh_aggregate) self.connect(self, SIGNAL('bareme_only()'), self.switch_bareme_only) # Window settings self.splash.showMessage( "Restoring settings...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) settings = QSettings() size = settings.value('MainWindow/Size', QVariant(QSize(800, 600))).toSize() self.resize(size) position = settings.value('MainWindow/Position', QVariant(QPoint(0, 0))).toPoint() self.move(position) self.restoreState(settings.value("MainWindow/State").toByteArray()) self.splash.showMessage( "Loading survey data...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) self.enable_aggregate(True) self.refresh_bareme() self.isLoaded = True self.splash.hide()
def initView(self): if self.impType == ImpDateType.SERVINGCELL: self.setWindowTitle(u'相邻小区数据导入') else: self.setWindowTitle(u'基站和小区数据导入') self.setWindowIcon(QIcon('images/logo.png')) self.resize(620, 480) # 数据表格 self.tableWidget = QTableWidget(self) self.tableWidget.setAlternatingRowColors(True) self.tableWidget.setRowCount(7) # 设置当前Table不能编辑 self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # 初始化表格上下文菜单 self.initTableContextMenu() # 初始化表头 self.initTableHeader() # 导入出错列表 self.listWidget = QListWidget(self) # 按钮组 impBtn = QPushButton(u"导入EXCEL表", self) yzBtn = QPushButton(u"数据检验", self) impdateBtn = QPushButton(u"导入数据", self) btnVBox = QVBoxLayout() btnVBox.addWidget(impBtn) btnVBox.addWidget(yzBtn) btnVBox.addWidget(impdateBtn) # 错误列表与按钮组 hBox = QHBoxLayout() hBox.setMargin(20) hBox.addWidget(self.listWidget) hBox.addLayout(btnVBox) self.mbar = QStatusBar(self) self.mbar.showMessage(u'准备就绪...') self.maction = QToolBar(self) self.editAction = QAction(u'编辑', self.maction) self.editAction.setCheckable(True) self.combox = QComboBox(self) self.combox.addItems(HeadsConfig.ImpExcelName) self.maction.addWidget(self.combox) self.maction.addAction(self.editAction) vBox = QVBoxLayout() vBox.addWidget(self.maction) vBox.addWidget(self.tableWidget) vBox.addLayout(hBox) vBox.addWidget(self.mbar) vBox.setStretchFactor(self.tableWidget, 9) vBox.setStretchFactor(hBox, 5) vBox.setStretchFactor(self.mbar, 1) self.setLayout(vBox) QObject.connect(impBtn, SIGNAL('clicked()'), self.impClick) QObject.connect(yzBtn, SIGNAL('clicked()'), self.yzClick) QObject.connect(impdateBtn, SIGNAL('clicked()'), self.impdateClick) QObject.connect(self.editAction, SIGNAL('triggered()'), self.editClick) QObject.connect(self.combox, SIGNAL('currentIndexChanged(int)'), self.comboxChange) self.listWidget.doubleClicked.connect(self.mlistClicked)
def createStatusBar(self): """create status bar""" self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar)
def __init__(self, app, dictOpts): QMainWindow.__init__(self) self.setWindowTitle("PostGIS Layer Viewer - v.1.6.1") self.setTabPosition(Qt.BottomDockWidgetArea, QTabWidget.North) self.canvas = QgsMapCanvas() self.canvas.setCanvasColor(Qt.white) self.canvas.useImageToRender(True) self.canvas.enableAntiAliasing(True) self.setCentralWidget(self.canvas) actionZoomIn = QAction(QIcon(imgs_dir + "mActionZoomIn.png"), QString("Zoom in"), self) actionZoomOut = QAction(QIcon(imgs_dir + "mActionZoomOut.png"), QString("Zoom out"), self) actionPan = QAction(QIcon(imgs_dir + "mActionPan.png"), QString("Pan"), self) actionZoomFullExtent = QAction( QIcon(imgs_dir + "mActionZoomFullExtent.png"), QString("Zoom full"), self) actionZoomIn.setCheckable(True) actionZoomOut.setCheckable(True) actionPan.setCheckable(True) self.connect(actionZoomIn, SIGNAL("triggered()"), self.zoomIn) self.connect(actionZoomOut, SIGNAL("triggered()"), self.zoomOut) self.connect(actionPan, SIGNAL("triggered()"), self.pan) self.connect(actionZoomFullExtent, SIGNAL("triggered()"), self.zoomFullExtent) self.actionGroup = QActionGroup(self) self.actionGroup.addAction(actionPan) self.actionGroup.addAction(actionZoomIn) self.actionGroup.addAction(actionZoomOut) # Create the toolbar self.toolbar = self.addToolBar("Map tools") self.toolbar.addAction(actionPan) self.toolbar.addAction(actionZoomIn) self.toolbar.addAction(actionZoomOut) self.toolbar.addAction(actionZoomFullExtent) # Create the map tools self.toolPan = QgsMapToolPan(self.canvas) self.toolPan.setAction(actionPan) self.toolZoomIn = QgsMapToolZoom(self.canvas, False) # false = in self.toolZoomIn.setAction(actionZoomIn) self.toolZoomOut = QgsMapToolZoom(self.canvas, True) # true = out self.toolZoomOut.setAction(actionZoomOut) # Create the statusbar self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.lblXY = QLabel() self.lblXY.setFrameStyle(QFrame.Box) self.lblXY.setMinimumWidth(170) self.lblXY.setAlignment(Qt.AlignCenter) self.statusbar.setSizeGripEnabled(False) self.statusbar.addPermanentWidget(self.lblXY, 0) self.lblScale = QLabel() self.lblScale.setFrameStyle(QFrame.StyledPanel) self.lblScale.setMinimumWidth(140) self.statusbar.addPermanentWidget(self.lblScale, 0) self.createLegendWidget() # Create the legend widget self.connect(app, SIGNAL("loadPgLayer"), self.loadLayer) self.connect(self.canvas, SIGNAL("scaleChanged(double)"), self.changeScale) self.connect(self.canvas, SIGNAL("xyCoordinates(const QgsPoint&)"), self.updateXY) self.pan() # Default self.plugins = Plugins(self, self.canvas, dictOpts['-h'], dictOpts['-p'], dictOpts['-d'], dictOpts['-U'], dictOpts['-W']) self.createAboutWidget() self.layerSRID = '-1' self.loadLayer(dictOpts)
class MenuQt(object): """主菜单""" add_record = QFrame(CENTRAL_WIDGET) # 增加交易记录的界面 grid_layout_widget = QWidget(add_record) # title的container grid_layout = QGridLayout(grid_layout_widget) title = QLabel(grid_layout_widget) statusbar = QStatusBar(WINDOW) # 股票代码的title以及输入框 grid_layout_widget_2 = QWidget(add_record) grid_layout_2 = QGridLayout(grid_layout_widget_2) share_code_title = QLabel(grid_layout_widget_2) grid_layout_widget_14 = QWidget(add_record) grid_layout_14 = QGridLayout(grid_layout_widget_14) share_code_input = QLineEdit(grid_layout_widget_14) # 股票名称的title和显示框 grid_layout_widget_12 = QWidget(add_record) grid_layout_12 = QGridLayout(grid_layout_widget_12) share_name_title = QLabel(grid_layout_widget_12) grid_layout_widget_21 = QWidget(add_record) grid_layout_21 = QGridLayout(grid_layout_widget_21) share_name_show = QLineEdit(grid_layout_widget_21) # 买入日期的title和输入框 grid_layout_widget_3 = QWidget(add_record) grid_layout_3 = QGridLayout(grid_layout_widget_3) buy_date_title = QLabel(grid_layout_widget_3) grid_layout_widget_15 = QWidget(add_record) grid_layout_15 = QGridLayout(grid_layout_widget_15) buy_date_input = QDateEdit(grid_layout_widget_15) # 卖出日期的title和输入框 grid_layout_widget_10 = QWidget(add_record) grid_layout_10 = QGridLayout(grid_layout_widget_10) sale_date_title = QLabel(grid_layout_widget_10) grid_layout_widget_20 = QWidget(add_record) grid_layout_20 = QGridLayout(grid_layout_widget_20) sale_date_input = QDateEdit(grid_layout_widget_20) # 买入数量的title和输入框 grid_layout_widget_5 = QWidget(add_record) grid_layout_5 = QGridLayout(grid_layout_widget_5) buy_num_title = QLabel(grid_layout_widget_5) grid_layout_widget_16 = QWidget(add_record) grid_layout_16 = QGridLayout(grid_layout_widget_16) buy_num_input = QLineEdit(grid_layout_widget_16) # 卖出数量的title和输入框 grid_layout_widget_25 = QWidget(add_record) grid_layout_25 = QGridLayout(grid_layout_widget_25) sale_num_input = QLineEdit(grid_layout_widget_25) grid_layout_widget_13 = QWidget(add_record) grid_layout_13 = QGridLayout(grid_layout_widget_13) sale_num_title = QLabel(grid_layout_widget_13) # 买入价格的title和输入框 grid_layout_widget_4 = QWidget(add_record) grid_layout_4 = QGridLayout(grid_layout_widget_4) buy_price_title = QLabel(grid_layout_widget_4) grid_layout_widget_17 = QWidget(add_record) grid_layout_17 = QGridLayout(grid_layout_widget_17) buy_price_input = QLineEdit(grid_layout_widget_17) # 卖出价格和输入框 grid_layout_widget_11 = QWidget(add_record) grid_layout_11 = QGridLayout(grid_layout_widget_11) sale_price_title = QLabel(grid_layout_widget_11) grid_layout_widget_22 = QWidget(add_record) grid_layout_22 = QGridLayout(grid_layout_widget_22) sale_price_input = QLineEdit(grid_layout_widget_22) # 持仓价格和显示框 grid_layout_widget_6 = QWidget(add_record) grid_layout_6 = QGridLayout(grid_layout_widget_6) have_avg_price = QLabel(grid_layout_widget_6) grid_layout_widget_19 = QWidget(add_record) grid_layout_19 = QGridLayout(grid_layout_widget_19) buv_avg_price_show = QLineEdit(grid_layout_widget_19) # 持仓数量和显示框 grid_layout_widget_7 = QWidget(add_record) grid_layout_7 = QGridLayout(grid_layout_widget_7) have_num_title = QLabel(grid_layout_widget_7) grid_layout_widget_18 = QWidget(add_record) grid_layout_18 = QGridLayout(grid_layout_widget_18) have_num_show = QLineEdit(grid_layout_widget_18) # 当前盈利和显示框 grid_layout_widget_8 = QWidget(add_record) grid_layout_8 = QGridLayout(grid_layout_widget_8) win_title = QLabel(grid_layout_widget_8) grid_layout_widget_24 = QWidget(add_record) grid_layout_24 = QGridLayout(grid_layout_widget_24) win_show = QLineEdit(grid_layout_widget_24) # 可卖数量和显示框 grid_layout_widget_9 = QWidget(add_record) grid_layout_9 = QGridLayout(grid_layout_widget_9) can_sale_num_title = QLabel(grid_layout_widget_9) grid_layout_widget_23 = QWidget(add_record) grid_layout_23 = QGridLayout(grid_layout_widget_23) can_sale_num_show = QLineEdit(grid_layout_widget_23) # 查询按钮 计算按钮 保存按钮 # grid_layout_widget_26 = QWidget(add_record) # grid_layout_26 = QGridLayout(grid_layout_widget_26) # query_button = QPushButton(grid_layout_widget_26) # grid_layout_widget_27 = QWidget(add_record) # grid_layout_27 = QGridLayout(grid_layout_widget_27) # compute_button = QPushButton(grid_layout_widget_27) grid_layout_widget_28 = QWidget(add_record) grid_layout_28 = QGridLayout(grid_layout_widget_28) save_button = QPushButton(grid_layout_widget_28) grid_layout_widget_29 = QWidget(add_record) grid_layout_29 = QGridLayout(grid_layout_widget_29) text_edit = QTextEdit(grid_layout_widget_29) menubar = QMenuBar(WINDOW) edit = QMenu(menubar) tool = QMenu(menubar) program = QMenu(menubar) help = QMenu(menubar) add = QAction(WINDOW) query = QAction(WINDOW) delete_record = QAction(WINDOW) add_share = QAction(WINDOW) import_share = QAction(WINDOW) login = QAction(WINDOW) logout = QAction(WINDOW) exit = QAction(WINDOW) about = QAction(WINDOW) slot_func = None @classmethod def init_window(cls): cls.slot_func = SlotFunc(cls) cls.init_widget() cls.init_button() cls.init_menu() cls.set_style_sheet() cls.init_text() cls.add_slot_func() QMetaObject.connectSlotsByName(WINDOW) @classmethod def init_menu(cls): WINDOW.setCentralWidget(CENTRAL_WIDGET) cls.menubar.setGeometry(QRect(0, 0, 960, 23)) cls.menubar.setObjectName(_fromUtf8("menubar")) cls.edit.setObjectName(_fromUtf8("edit")) cls.tool.setObjectName(_fromUtf8("tool")) cls.program.setObjectName(_fromUtf8("program")) cls.help.setObjectName(_fromUtf8("help")) WINDOW.setMenuBar(cls.menubar) cls.statusbar.setObjectName(_fromUtf8("statusbar")) WINDOW.setStatusBar(cls.statusbar) cls.add.setObjectName(_fromUtf8("add")) cls.query.setObjectName(_fromUtf8("query")) cls.delete_record.setObjectName(_fromUtf8("delete_record")) cls.add_share.setObjectName(_fromUtf8("add_share")) cls.import_share.setObjectName(_fromUtf8("import_share")) cls.login.setObjectName(_fromUtf8("login")) cls.logout.setObjectName(_fromUtf8("logout")) cls.exit.setObjectName(_fromUtf8("exit")) cls.about.setObjectName(_fromUtf8("about")) cls.edit.addAction(cls.add) cls.edit.addAction(cls.query) cls.edit.addAction(cls.delete_record) cls.tool.addAction(cls.add_share) cls.tool.addAction(cls.import_share) cls.tool.addSeparator() cls.tool.addAction(cls.login) cls.tool.addAction(cls.logout) cls.program.addAction(cls.exit) cls.help.addAction(cls.about) cls.menubar.addAction(cls.edit.menuAction()) cls.menubar.addAction(cls.tool.menuAction()) cls.menubar.addAction(cls.program.menuAction()) cls.menubar.addAction(cls.help.menuAction()) @classmethod def add_slot_func(cls): """增加槽函数""" cls.share_code_input.textChanged.connect( cls.slot_func.query_share_code) cls.save_button.clicked.connect(cls.slot_func.save_record) @classmethod def init_button(cls): """初始化按钮""" # cls.grid_layout_widget_26.setGeometry(QRect(160, 390, 121, 50)) # cls.grid_layout_widget_26.setObjectName(_fromUtf8("grid_layout_widget_26")) # cls.grid_layout_26.setObjectName(_fromUtf8("grid_layout_26")) # cls.query_button.setFont(WindowCons.get_font(bold=True)) # cls.query_button.setFlat(False) # cls.query_button.setObjectName(_fromUtf8("query_button")) # cls.grid_layout_26.addWidget(cls.query_button, 0, 0, 1, 1) # cls.grid_layout_widget_27.setGeometry(QRect(300, 390, 121, 50)) # cls.grid_layout_widget_27.setObjectName(_fromUtf8("grid_layout_widget_27")) # cls.grid_layout_27.setObjectName(_fromUtf8("grid_layout_27")) # cls.compute_button.setFont(WindowCons.get_font(bold=True)) # cls.compute_button.setObjectName(_fromUtf8("compute_button")) # cls.grid_layout_27.addWidget(cls.compute_button, 0, 0, 1, 1) cls.grid_layout_widget_28.setGeometry(QRect(440, 390, 121, 50)) cls.grid_layout_widget_28.setObjectName( _fromUtf8("grid_layout_widget_28")) cls.grid_layout_28.setObjectName(_fromUtf8("grid_layout_28")) cls.save_button.setFont(WindowCons.get_font(bold=True)) cls.save_button.setObjectName(_fromUtf8("save_button")) cls.grid_layout_28.addWidget(cls.save_button, 0, 0, 1, 1) cls.grid_layout_widget_29.setGeometry(QRect(570, 390, 160, 73)) cls.grid_layout_widget_29.setObjectName( _fromUtf8("grid_layout_widget_29")) cls.grid_layout_29.setObjectName(_fromUtf8("grid_layout_29")) cls.text_edit.setEnabled(False) cls.text_edit.setReadOnly(True) cls.text_edit.setFrameShape(False) cls.text_edit.setObjectName(_fromUtf8("textEdit")) cls.grid_layout_29.addWidget(cls.text_edit, 0, 0, 1, 1) @classmethod def set_style_sheet(cls): """设置样式""" # cls.query_button.setStyleSheet(WindowCons.button_style()) cls.save_button.setStyleSheet(WindowCons.button_style()) # cls.compute_button.setStyleSheet(WindowCons.button_style()) cls.add_record.setStyleSheet(WindowCons.background_image()) cls.title.setStyleSheet(WindowCons.LIGHT_BLUE_STYLE) cls.sale_num_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.share_name_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.sale_price_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.buy_date_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.win_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.buy_num_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.can_sale_num_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.have_num_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.share_code_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.buy_price_title.setStyleSheet(WindowCons.WHITE_STYLE) cls.have_avg_price.setStyleSheet(WindowCons.WHITE_STYLE) cls.sale_date_title.setStyleSheet(WindowCons.WHITE_STYLE) # cls.text_edit.setAttribute(Qt.WA_TranslucentBackground, True) # cls.text_edit.repaint() cls.text_edit.setStyleSheet(WindowCons.TRANSPARENT) palette1 = QPalette() palette1.setBrush( cls.add_record.backgroundRole(), QBrush(QPixmap(':backgroud.png').scaled(cls.add_record.size()))) cls.add_record.setPalette(palette1) cls.add_record.setStyleSheet(WindowCons.background_image()) @classmethod def init_widget(cls): CENTRAL_WIDGET.setObjectName(_fromUtf8("centralwidget")) cls.add_record.setGeometry(QRect(-1, -1, 961, 561)) cls.add_record.setObjectName(_fromUtf8("add_record")) cls.grid_layout_widget.setGeometry(QRect(50, 10, 314, 50)) cls.grid_layout_widget.setObjectName(_fromUtf8("gridLayoutWidget")) cls.grid_layout.setObjectName(_fromUtf8("gridLayout")) cls.title.setFont(WindowCons.get_font(size=16, weight=50)) cls.title.setTextFormat(Qt.PlainText) cls.title.setScaledContents(False) cls.title.setAlignment(Qt.AlignCenter) cls.title.setObjectName(_fromUtf8("title")) cls.grid_layout.addWidget(cls.title, 0, 0, 1, 1) cls._init_labels() @classmethod def init_text(cls): """初始化文字""" WINDOW.setWindowTitle(_translate("MainWindow", "驰骋A股", None)) cls.title.setText(_translate("MainWindow", "新增交易记录", None)) cls.share_code_title.setText(_translate("MainWindow", "股票代码", None)) cls.buy_date_title.setText(_translate("MainWindow", "买入日期", None)) cls.buy_price_title.setText(_translate("MainWindow", "买入价格", None)) cls.buy_num_title.setText(_translate("MainWindow", "买入数量", None)) cls.have_avg_price.setText(_translate("MainWindow", "持仓均价", None)) cls.have_num_title.setText(_translate("MainWindow", "持仓数量", None)) cls.win_title.setText(_translate("MainWindow", "当前盈利", None)) cls.can_sale_num_title.setText(_translate("MainWindow", "可卖数量", None)) cls.sale_date_title.setText(_translate("MainWindow", "卖出日期", None)) cls.sale_price_title.setText(_translate("MainWindow", "卖出价格", None)) cls.share_name_title.setText(_translate("MainWindow", "股票名称", None)) cls.sale_num_title.setText(_translate("MainWindow", "卖出数量", None)) # cls.query_button.setText(_translate("MainWindow", "查询", None)) # cls.compute_button.setText(_translate("MainWindow", "计算", None)) cls.save_button.setText(_translate("MainWindow", "保存", None)) cls.text_edit.setHtml( _translate( "MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">数量单位:手(1手=100股)</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">货币单位:元</p></body></html>", None)) cls.edit.setTitle(_translate("MainWindow", "编辑", None)) cls.tool.setTitle(_translate("MainWindow", "工具", None)) cls.program.setTitle(_translate("MainWindow", "程序", None)) cls.help.setTitle(_translate("MainWindow", "帮助", None)) cls.add.setText(_translate("MainWindow", "新增交易记录", None)) cls.query.setText(_translate("MainWindow", "查询交易记录", None)) cls.delete_record.setText(_translate("MainWindow", "删除交易记录", None)) cls.add_share.setText(_translate("MainWindow", "新增股票信息", None)) cls.import_share.setText(_translate("MainWindow", "导入股票信息", None)) cls.login.setText(_translate("MainWindow", "登录", None)) cls.logout.setText(_translate("MainWindow", "注销", None)) cls.exit.setText(_translate("MainWindow", "退出", None)) cls.about.setText(_translate("MainWindow", "关于", None)) cls.statusbar.showMessage( "本程序仅限内部人员使用,如作他用所承受的法律责任一概与作者无关(使用即代表你同意上述观点)") cls.statusbar.setStyleSheet(WindowCons.RED_STYLE) @classmethod def _init_labels(cls): """初始化页面的label""" cls.__init_share_code() # 初始化股票代码以及输入框 cls.__init_share_name() # 初始化股票名称以及显示框 cls.__init_buy_date() # 初始化买入日期以及输入框 cls.__init_sale_date() # 初始化卖出日期以及输入框 cls.__init_buy_num() # 初始化买入数量以及输入框 cls.__init_sale_num() # 初始化卖出数量以及输入框 cls.__init_buy_price() # 初始化买入价格以及输入框 cls.__init_sale_price() # 初始化卖出价格以及输入框 cls.__init_buy_avg_price() # 初始化平均价以及显示框 cls.__init_have_num() # 初始化持仓数量以及显示框 cls.__init_have_win() # 初始化当前股票盈利情况以及显示框 cls.__can_sale_num() # 初始化可卖数量以及显示框 @classmethod def __init_share_code(cls): cls.grid_layout_widget_2.setGeometry(QRect(160, 60, 101, 41)) cls.grid_layout_widget_2.setObjectName(_fromUtf8("gridLayoutWidget_2")) cls.grid_layout_2.setObjectName(_fromUtf8("gridLayout_2")) cls.share_code_title.setFont(WindowCons.get_font(bold=True)) cls.share_code_title.setTextFormat(Qt.PlainText) cls.share_code_title.setAlignment(Qt.AlignCenter) cls.share_code_title.setObjectName(_fromUtf8("share_code_title")) cls.grid_layout_2.addWidget(cls.share_code_title, 0, 0, 1, 1) cls.grid_layout_widget_14.setGeometry(QRect(280, 60, 141, 50)) cls.grid_layout_widget_14.setObjectName( _fromUtf8("gridLayoutWidget_14")) cls.grid_layout_14.setObjectName(_fromUtf8("gridLayout_14")) cls.share_code_input.setFont( WindowCons.get_font(weight=50, family=WindowCons.YAHEI_UI_FAMILY)) cls.share_code_input.setObjectName(_fromUtf8("share_code_input")) cls.share_code_input.setValidator(RegExpValidator()) cls.grid_layout_14.addWidget(cls.share_code_input, 0, 0, 1, 1) @classmethod def __init_share_name(cls): cls.grid_layout_widget_12.setGeometry(QRect(450, 60, 101, 41)) cls.grid_layout_widget_12.setObjectName( _fromUtf8("gridLayoutWidget_12")) cls.grid_layout_12.setObjectName(_fromUtf8("gridLayout_12")) cls.share_name_title.setFont(WindowCons.get_font(bold=True)) cls.share_name_title.setTextFormat(Qt.PlainText) cls.share_name_title.setAlignment(Qt.AlignCenter) cls.share_name_title.setObjectName(_fromUtf8("share_name_title")) cls.grid_layout_12.addWidget(cls.share_name_title, 0, 0, 1, 1) cls.grid_layout_widget_21.setGeometry(QRect(570, 60, 141, 50)) cls.grid_layout_widget_21.setObjectName( _fromUtf8("grid_layout_widget_21")) cls.grid_layout_21.setObjectName(_fromUtf8("grid_layout_21")) cls.share_name_show.setEnabled(True) cls.share_name_show.setFont( WindowCons.get_font(weight=50, family=WindowCons.YAHEI_LIGHT_FAMILY)) cls.share_name_show.setReadOnly(True) cls.share_name_show.setFrame(False) cls.share_name_show.setObjectName(_fromUtf8("share_name_show")) cls.grid_layout_21.addWidget(cls.share_name_show, 0, 0, 1, 1) @classmethod def __init_buy_date(cls): cls.grid_layout_widget_3.setGeometry(QRect(160, 110, 101, 41)) cls.grid_layout_widget_3.setObjectName(_fromUtf8("gridLayoutWidget_3")) cls.grid_layout_3.setObjectName(_fromUtf8("gridLayout_3")) cls.buy_date_title.setFont(WindowCons.get_font(bold=True)) cls.buy_date_title.setTextFormat(Qt.PlainText) cls.buy_date_title.setAlignment(Qt.AlignCenter) cls.buy_date_title.setObjectName(_fromUtf8("buy_date_title")) cls.grid_layout_3.addWidget(cls.buy_date_title, 0, 0, 1, 1) cls.grid_layout_widget_15.setGeometry(QRect(280, 110, 141, 41)) cls.grid_layout_widget_15.setObjectName( _fromUtf8("gridLayoutWidget_15")) cls.grid_layout_15.setObjectName(_fromUtf8("gridLayout_15")) cls.buy_date_input.setEnabled(True) size_policy = WindowCons.get_size_policy(cls.buy_date_input) cls.buy_date_input.setSizePolicy(size_policy) cls.buy_date_input.setFont( WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY, size=12)) cls.buy_date_input.setWrapping(False) cls.buy_date_input.setCalendarPopup(True) cls.buy_date_input.setFrame(False) cls.buy_date_input.setDate( QDate(datetime.datetime.date(datetime.datetime.now()))) cls.buy_date_input.setObjectName(_fromUtf8("buy_date_input")) cls.grid_layout_15.addWidget(cls.buy_date_input, 0, 0, 1, 1) @classmethod def __init_sale_date(cls): cls.grid_layout_widget_10.setGeometry(QRect(450, 110, 101, 41)) cls.grid_layout_widget_10.setObjectName( _fromUtf8("gridLayoutWidget_10")) cls.grid_layout_10.setObjectName(_fromUtf8("gridLayout_10")) cls.sale_date_title.setFont(WindowCons.get_font(bold=True)) cls.sale_date_title.setTextFormat(Qt.PlainText) cls.sale_date_title.setAlignment(Qt.AlignCenter) cls.sale_date_title.setObjectName(_fromUtf8("buy_date_title_2")) cls.grid_layout_10.addWidget(cls.sale_date_title, 0, 0, 1, 1) cls.grid_layout_widget_20.setGeometry(QRect(570, 110, 141, 41)) cls.grid_layout_widget_20.setObjectName( _fromUtf8("gridLayoutWidget_20")) cls.grid_layout_20.setObjectName(_fromUtf8("gridLayout_20")) cls.sale_date_input.setFont( WindowCons.get_font(size=12, family=WindowCons.YAHEI_LIGHT_FAMILY)) cls.sale_date_input.setWrapping(False) cls.sale_date_input.setFrame(False) cls.sale_date_input.setCalendarPopup(True) cls.sale_date_input.setDate( QDate(datetime.datetime.date(datetime.datetime.now()))) cls.sale_date_input.setObjectName(_fromUtf8("sale_date_input")) cls.grid_layout_20.addWidget(cls.sale_date_input, 0, 0, 1, 1) @classmethod def __init_buy_num(cls): cls.grid_layout_widget_5.setGeometry(QRect(160, 210, 101, 41)) cls.grid_layout_widget_5.setObjectName(_fromUtf8("gridLayoutWidget_5")) cls.grid_layout_5.setObjectName(_fromUtf8("gridLayout_5")) cls.buy_num_title.setFont(WindowCons.get_font(bold=True)) cls.buy_num_title.setTextFormat(Qt.PlainText) cls.buy_num_title.setAlignment(Qt.AlignCenter) cls.buy_num_title.setObjectName(_fromUtf8("buy_num_title")) cls.grid_layout_5.addWidget(cls.buy_num_title, 0, 0, 1, 1) cls.grid_layout_widget_16.setGeometry(QRect(280, 210, 141, 41)) cls.grid_layout_widget_16.setObjectName( _fromUtf8("gridLayoutWidget_16")) cls.grid_layout_16.setObjectName(_fromUtf8("gridLayout_16")) cls.buy_num_input.setValidator(IntValidator()) cls.buy_num_input.setText("100") cls.buy_num_input.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.buy_num_input.setFrame(False) cls.buy_num_input.setObjectName(_fromUtf8("buy_num_input")) cls.grid_layout_16.addWidget(cls.buy_num_input, 0, 0, 1, 1) @classmethod def __init_sale_num(cls): # 初始化卖出数量以及输入框 cls.grid_layout_widget_25.setGeometry(QRect(570, 210, 141, 41)) cls.grid_layout_widget_25.setObjectName( _fromUtf8("gridLayoutWidget_25")) cls.grid_layout_25.setObjectName(_fromUtf8("gridLayout_25")) cls.sale_num_input.setValidator(IntValidator()) cls.sale_num_input.setText("100") cls.sale_num_input.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.sale_num_input.setFrame(False) cls.sale_num_input.setObjectName(_fromUtf8("sale_num_input")) cls.grid_layout_25.addWidget(cls.sale_num_input, 0, 0, 1, 1) cls.grid_layout_widget_13.setGeometry(QRect(450, 210, 101, 41)) cls.grid_layout_widget_13.setObjectName( _fromUtf8("gridLayoutWidget_13")) cls.grid_layout_13.setObjectName(_fromUtf8("gridLayout_13")) cls.sale_num_title.setFont(WindowCons.get_font(bold=True)) cls.sale_num_title.setTextFormat(Qt.PlainText) cls.sale_num_title.setAlignment(Qt.AlignCenter) cls.sale_num_title.setObjectName(_fromUtf8("buy_num_title_2")) cls.grid_layout_13.addWidget(cls.sale_num_title, 0, 0, 1, 1) @classmethod def __init_buy_price(cls): # 初始化买入价格以及输入框 cls.grid_layout_widget_4.setGeometry(QRect(160, 160, 101, 41)) cls.grid_layout_widget_4.setObjectName(_fromUtf8("gridLayoutWidget_4")) cls.grid_layout_4.setObjectName(_fromUtf8("gridLayout_4")) cls.buy_price_title.setFont(WindowCons.get_font(bold=True)) cls.buy_price_title.setTextFormat(Qt.PlainText) cls.buy_price_title.setAlignment(Qt.AlignCenter) cls.buy_price_title.setObjectName(_fromUtf8("buy_price_title")) cls.grid_layout_4.addWidget(cls.buy_price_title, 0, 0, 1, 1) cls.grid_layout_widget_17.setGeometry(QRect(280, 160, 141, 41)) cls.grid_layout_widget_17.setObjectName( _fromUtf8("gridLayoutWidget_17")) cls.grid_layout_17.setObjectName(_fromUtf8("gridLayout_17")) cls.buy_price_input.setFont( WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY)) cls.buy_price_input.setFrame(False) cls.buy_price_input.setValidator(DoubleValidator()) cls.buy_price_input.setText("0.00") cls.buy_price_input.setObjectName(_fromUtf8("buy_price_input")) cls.grid_layout_17.addWidget(cls.buy_price_input, 0, 0, 1, 1) @classmethod def __init_sale_price(cls): # 初始化卖出价格以及输入框 cls.grid_layout_widget_11.setGeometry(QRect(450, 160, 101, 41)) cls.grid_layout_widget_11.setObjectName( _fromUtf8("gridLayoutWidget_11")) cls.grid_layout_11.setObjectName(_fromUtf8("gridLayout_11")) cls.sale_price_title.setFont(WindowCons.get_font(bold=True)) cls.sale_price_title.setTextFormat(Qt.PlainText) cls.sale_price_title.setAlignment(Qt.AlignCenter) cls.sale_price_title.setObjectName(_fromUtf8("cls.sale_price_title")) cls.grid_layout_11.addWidget(cls.sale_price_title, 0, 0, 1, 1) cls.grid_layout_widget_22.setGeometry(QRect(570, 160, 141, 41)) cls.grid_layout_widget_22.setObjectName( _fromUtf8("grid_layout_widget_22")) cls.grid_layout_22.setObjectName(_fromUtf8("grid_layout_22")) cls.sale_price_input.setFont( WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY)) cls.sale_price_input.setFrame(False) cls.sale_price_input.setText("0.00") cls.sale_price_input.setValidator(DoubleValidator()) cls.sale_price_input.setObjectName(_fromUtf8("sale_price_input")) cls.grid_layout_22.addWidget(cls.sale_price_input, 0, 0, 1, 1) @classmethod def __init_buy_avg_price(cls): # 初始化平均价以及显示框 cls.grid_layout_widget_6.setGeometry(QRect(160, 260, 101, 41)) cls.grid_layout_widget_6.setObjectName( _fromUtf8("grid_layout_widget_6")) cls.grid_layout_6.setObjectName(_fromUtf8("grid_layout_6")) cls.have_avg_price.setFont(WindowCons.get_font(bold=True)) cls.have_avg_price.setTextFormat(Qt.PlainText) cls.have_avg_price.setAlignment(Qt.AlignCenter) cls.have_avg_price.setObjectName(_fromUtf8("have_avg_price")) cls.grid_layout_6.addWidget(cls.have_avg_price, 0, 0, 1, 1) cls.grid_layout_widget_19.setGeometry(QRect(280, 260, 141, 41)) cls.grid_layout_widget_19.setObjectName( _fromUtf8("grid_layout_widget_19")) cls.grid_layout_19.setObjectName(_fromUtf8("grid_layout_19")) cls.buv_avg_price_show.setEnabled(True) cls.buv_avg_price_show.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.buv_avg_price_show.setReadOnly(True) cls.buv_avg_price_show.setFrame(False) cls.buv_avg_price_show.setObjectName(_fromUtf8("buv_avg_price_show")) cls.grid_layout_19.addWidget(cls.buv_avg_price_show, 0, 0, 1, 1) @classmethod def __init_have_num(cls): # 初始化持仓数量以及显示框 cls.grid_layout_widget_7.setGeometry(QRect(160, 310, 101, 41)) cls.grid_layout_widget_7.setObjectName( _fromUtf8("grid_layout_widget_7")) cls.grid_layout_7.setObjectName(_fromUtf8("grid_layout_7")) cls.have_num_title.setFont(WindowCons.get_font(bold=True)) cls.have_num_title.setTextFormat(Qt.PlainText) cls.have_num_title.setAlignment(Qt.AlignCenter) cls.have_num_title.setObjectName(_fromUtf8("have_num_title")) cls.grid_layout_7.addWidget(cls.have_num_title, 0, 0, 1, 1) cls.grid_layout_widget_18.setGeometry(QRect(280, 310, 141, 41)) cls.grid_layout_widget_18.setObjectName( _fromUtf8("grid_layout_widget_18")) cls.grid_layout_18.setObjectName(_fromUtf8("grid_layout_18")) cls.have_num_show.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.have_num_show.setReadOnly(True) cls.have_num_show.setFrame(False) cls.have_num_show.setObjectName(_fromUtf8("have_num_show")) cls.grid_layout_18.addWidget(cls.have_num_show, 0, 0, 1, 1) @classmethod def __init_have_win(cls): # 初始化当前股票盈利情况以及显示框 cls.grid_layout_widget_8.setGeometry(QRect(450, 260, 101, 41)) cls.grid_layout_widget_8.setObjectName( _fromUtf8("grid_layout_widget_8")) cls.grid_layout_8.setObjectName(_fromUtf8("grid_layout_8")) cls.win_title.setFont(WindowCons.get_font(bold=True)) cls.win_title.setTextFormat(Qt.PlainText) cls.win_title.setAlignment(Qt.AlignCenter) cls.win_title.setObjectName(_fromUtf8("win_title")) cls.grid_layout_8.addWidget(cls.win_title, 0, 0, 1, 1) cls.grid_layout_widget_24.setGeometry(QRect(570, 260, 141, 41)) cls.grid_layout_widget_24.setObjectName( _fromUtf8("grid_layout_widget_24")) cls.grid_layout_24.setObjectName(_fromUtf8("grid_layout_24")) cls.win_show.setEnabled(True) cls.win_show.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.win_show.setReadOnly(True) cls.win_show.setObjectName(_fromUtf8("win_show")) cls.win_show.setFrame(False) cls.grid_layout_24.addWidget(cls.win_show, 0, 0, 1, 1) @classmethod def __can_sale_num(cls): # 初始化可卖数量以及显示框 cls.grid_layout_widget_9.setGeometry(QRect(450, 310, 101, 41)) cls.grid_layout_widget_9.setObjectName( _fromUtf8("grid_layout_widget_9")) cls.grid_layout_9.setObjectName(_fromUtf8("gridLayout_9")) cls.can_sale_num_title.setFont(WindowCons.get_font(bold=True)) cls.can_sale_num_title.setTextFormat(Qt.PlainText) cls.can_sale_num_title.setAlignment(Qt.AlignCenter) cls.can_sale_num_title.setObjectName(_fromUtf8("can_sale_num_title")) cls.grid_layout_9.addWidget(cls.can_sale_num_title, 0, 0, 1, 1) cls.grid_layout_widget_23.setGeometry(QRect(570, 310, 141, 41)) cls.grid_layout_widget_23.setObjectName( _fromUtf8("gridLayoutWidget_23")) cls.grid_layout_23.setObjectName(_fromUtf8("grid_layout_23")) cls.can_sale_num_show.setEnabled(True) cls.can_sale_num_show.setFont( WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY)) cls.can_sale_num_show.setReadOnly(True) cls.can_sale_num_show.setFrame(False) cls.can_sale_num_show.setObjectName(_fromUtf8("can_sale_num_show")) cls.grid_layout_23.addWidget(cls.can_sale_num_show, 0, 0, 1, 1)
def create_widget(self): """ Create the QStatusBar widget. """ self.widget = QStatusBar(self.parent_widget())
def setupUi(self, port): self.setObjectName("MainWindow") self.resize(600, 600) self.centralwidget = QWidget(self) p = self.centralwidget.palette() self.centralwidget.setAutoFillBackground(True) p.setColor(self.centralwidget.backgroundRole(), QColor(126, 135, 152)) self.centralwidget.setPalette(p) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 808, 25)) self.menubar.setObjectName("menubar") self.menuFile = QMenu(self.menubar) self.menuFile.setObjectName("menuFile") self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.actionQuit = QAction(self) self.actionQuit.setObjectName("actionQuit") self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menubar.addAction(self.menuFile.menuAction()) self.actionReset = QAction(self) self.actionReset.setObjectName("reset") self.menuFile.addSeparator() self.menuFile.addAction(self.actionReset) self.menubar.addAction(self.menuFile.menuAction()) # add other GUI objects self.graph_widget = GraphWidget(self.statusbar) self.gridLayout.addWidget(self.graph_widget, 1, 11, 10, 10) pixmap = QPixmap(':/images/cta-logo-mini.png') lbl = QLabel() lbl.setPixmap(pixmap) self.gridLayout.addWidget(lbl, 0, 0) p = self.graph_widget.palette() self.graph_widget.setAutoFillBackground(True) p.setColor(self.graph_widget.backgroundRole(), QColor(255, 255, 255)) # QColor(226, 235, 252)) self.graph_widget.setPalette(p) self.quitButton = QPushButton() # self.centralwidget) self.quitButton.setObjectName("quitButton") self.quitButton.setText( QApplication.translate("MainWindow", "Quit", None, QApplication.UnicodeUTF8)) self.gridLayout.addWidget(self.quitButton, 12, 0, 1, 1) self.info_label = InfoLabel(0, 4) self.info_label.setAutoFillBackground(True) self.gridLayout.addWidget(self.info_label, 1, 0, 1, 5) #self.info_label.setAlignment(PyQt4.Qt.AlignCenter); palette = QPalette() palette.setColor(self.info_label.backgroundRole(), Qt.lightGray) self.info_label.setPalette(palette) QObject.connect(self.quitButton, SIGNAL("clicked()"), self.stop) QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.stop) QMetaObject.connectSlotsByName(self) self.retranslateUi() QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.close) QMetaObject.connectSlotsByName(self) # Create GuiConnexion for ZMQ comminucation with pipeline self.guiconnection = GuiConnexion(gui_port=port, statusBar=self.statusbar) self.guiconnection.message.connect(self.graph_widget.pipechange) self.guiconnection.message.connect(self.info_label.pipechange) self.guiconnection.reset_message.connect(self.graph_widget.reset) self.guiconnection.reset_message.connect(self.info_label.reset) self.guiconnection.mode_message.connect(self.info_label.mode_receive) QObject.connect(self.actionReset, SIGNAL("triggered()"), self.guiconnection.reset) QMetaObject.connectSlotsByName(self) # start the process self.guiconnection.start()
req = {'type': 'request'} confManager = ConfManager.getManager() fts = confManager.getValue('common', 'folders') ui.nameLabel.setText(confManager.getValue('UI', 'username')) i = 0 for ft in fts: flistItem = QListWidgetItem(QIcon('icon/folder.png'), ft, ui.folderList) ui.folderList.insertItem(i, flistItem) i += 1 statusBar = QStatusBar(d) #print confManager.getValue('UI', 'window') statusBar.showMessage( confManager.getValue('UI', 'statusbar')['messages']['init']) d.setStatusBar(statusBar) def connect(btn): """connect to UniFileSync Server""" req['param'] = {'name': 'all'} print btn.text() if btn.text() == 'Connect': req['action'] = 'start' else:
def setupUi(self): self.setWindowTitle(self.tr("DB Manager")) self.setWindowIcon(QIcon(":/db_manager/icon")) self.resize(QSize(700, 500).expandedTo(self.minimumSizeHint())) # create central tab widget and add the first 3 tabs: info, table and preview self.tabs = QTabWidget() self.info = InfoViewer(self) self.tabs.addTab(self.info, self.tr("Info")) self.table = TableViewer(self) self.tabs.addTab(self.table, self.tr("Table")) self.preview = LayerPreview(self) self.tabs.addTab(self.preview, self.tr("Preview")) self.setCentralWidget(self.tabs) # display close button for all tabs but the first 3 ones, i.e. # HACK: just hide the close button where not needed (GS) self.tabs.setTabsClosable(True) self.tabs.tabCloseRequested.connect(self.close_tab) tabbar = self.tabs.tabBar() for i in range(3): btn = tabbar.tabButton(i, QTabBar.RightSide) if tabbar.tabButton( i, QTabBar.RightSide) else tabbar.tabButton( i, QTabBar.LeftSide) btn.resize(0, 0) btn.hide() # Creates layout for message bar self.layout = QGridLayout(self.info) self.layout.setContentsMargins(0, 0, 0, 0) spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.layout.addItem(spacerItem, 1, 0, 1, 1) # init messageBar instance self.infoBar = QgsMessageBar(self.info) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.infoBar.setSizePolicy(sizePolicy) self.layout.addWidget(self.infoBar, 0, 0, 1, 1) # create database tree self.dock = QDockWidget("Tree", self) self.dock.setObjectName("DB_Manager_DBView") self.dock.setFeatures(QDockWidget.DockWidgetMovable) self.tree = DBTree(self) self.dock.setWidget(self.tree) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock) # create status bar self.statusBar = QStatusBar(self) self.setStatusBar(self.statusBar) # create menus self.menuBar = QMenuBar(self) self.menuDb = QMenu(self.tr("&Database"), self) self.menuBar.addMenu(self.menuDb) self.menuSchema = QMenu(self.tr("&Schema"), self) actionMenuSchema = self.menuBar.addMenu(self.menuSchema) self.menuTable = QMenu(self.tr("&Table"), self) actionMenuTable = self.menuBar.addMenu(self.menuTable) self.menuHelp = None # QMenu(self.tr("&Help"), self) # actionMenuHelp = self.menuBar.addMenu(self.menuHelp) self.setMenuBar(self.menuBar) # create toolbar self.toolBar = QToolBar("Default", self) self.toolBar.setObjectName("DB_Manager_ToolBar") self.addToolBar(self.toolBar) # create menus' actions # menu DATABASE sep = self.menuDb.addSeparator() sep.setObjectName("DB_Manager_DbMenu_placeholder") sep.setVisible(False) self.actionRefresh = self.menuDb.addAction( QIcon(":/db_manager/actions/refresh"), self.tr("&Refresh"), self.refreshActionSlot, QKeySequence("F5")) self.actionSqlWindow = self.menuDb.addAction( QIcon(":/db_manager/actions/sql_window"), self.tr("&SQL window"), self.runSqlWindow, QKeySequence("F2")) self.menuDb.addSeparator() self.actionClose = self.menuDb.addAction(QIcon(), self.tr("&Exit"), self.close, QKeySequence("CTRL+Q")) # menu SCHEMA sep = self.menuSchema.addSeparator() sep.setObjectName("DB_Manager_SchemaMenu_placeholder") sep.setVisible(False) actionMenuSchema.setVisible(False) # menu TABLE sep = self.menuTable.addSeparator() sep.setObjectName("DB_Manager_TableMenu_placeholder") sep.setVisible(False) self.actionImport = self.menuTable.addAction( QIcon(":/db_manager/actions/import"), self.tr("&Import layer/file"), self.importActionSlot) self.actionExport = self.menuTable.addAction( QIcon(":/db_manager/actions/export"), self.tr("&Export to file"), self.exportActionSlot) self.menuTable.addSeparator() #self.actionShowSystemTables = self.menuTable.addAction(self.tr("Show system tables/views"), self.showSystemTables) #self.actionShowSystemTables.setCheckable(True) #self.actionShowSystemTables.setChecked(True) actionMenuTable.setVisible(False) # add actions to the toolbar self.toolBar.addAction(self.actionRefresh) self.toolBar.addAction(self.actionSqlWindow) self.toolBar.addAction(self.actionImport) self.toolBar.addAction(self.actionExport)
def createStatusBar(self): sb = QStatusBar() sb.setFixedHeight(18) self.setStatusBar(sb) self.statusBar().showMessage(self.tr("Ready"))
def __init__(self, appid, base, name): super(BrowserWindow, self).__init__() self.appid = appid self.name = name self.original_name = name self.base = base # Main widgets self.centralwidget = QWidget(self) self.gridLayout_2 = QGridLayout(self.centralwidget) self.setCentralWidget(self.centralwidget) self.urlLineEdit = QLineEdit(self) self.progressBar = QProgressBar(self) # Custom webview self.page = LocalWebPage() self.page.setFeaturePermission(self.page.mainFrame(), LocalWebPage.Notifications, LocalWebPage.PermissionGrantedByUser) self.webkitNotifications = WebkitNotifications(self) self.webViewMain = LocalWebView(self.centralwidget) self.webViewMain.setPage(self.page) self.gridLayout_2.addWidget(self.webViewMain, 0, 0, 1, 1) self.webViewMain.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.menubar = QMenuBar(self) self.menuFile = QMenu(self.menubar) self.menuView = QMenu(self.menubar) self.menuEdit = QMenu(self.menubar) self.menuHelp = QMenu(self.menubar) self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) self.toolBar = QToolBar(self) self.toolBar.setMovable(False) self.toolBar.setFloatable(False) self.addToolBar(Qt.TopToolBarArea, self.toolBar) # Create actions self.actionOpenLinkInNewWindow = self.page.action( self.page.OpenLinkInNewWindow) self.actionOpenLinkInNewWindow.setText( tr('BrowserWindow', 'Open in &Browser')) self.actionBack = self.page.action(self.page.Back) self.actionForward = self.page.action(self.page.Forward) self.actionStop = self.page.action(self.page.Stop) self.actionReload = self.page.action(self.page.Reload) self.actionHome = QAction(self) self.actionShowMenu = QAction(self) self.actionShowMenu.setCheckable(True) self.actionShowToolbar = QAction(self) self.actionShowToolbar.setCheckable(True) self.actionClose = QAction(self) self.actionModifyWebapp = QAction(self) self.actionEditPreferences = QAction(self) self.actionPrint = QAction(self) self.actionSaveLink = self.page.action(self.page.DownloadLinkToDisk) self.actionSaveLink.setEnabled(False) self.actionAbout = QAction(self) # Populate menu and toolbars self.menuFile.addAction(self.actionHome) self.menuFile.addAction(self.actionBack) self.menuFile.addAction(self.actionForward) self.menuFile.addAction(self.actionStop) self.menuFile.addAction(self.actionReload) self.menuFile.addSeparator() self.menuFile.addAction(self.actionPrint) self.menuFile.addSeparator() self.menuFile.addAction(self.actionClose) self.menuView.addAction(self.actionShowMenu) self.menuView.addAction(self.actionShowToolbar) self.menuView.addSeparator() self.menuEdit.addAction(self.actionModifyWebapp) #self.menuEdit.addAction(self.actionEditPreferences) self.menuHelp.addAction(self.actionAbout) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuEdit.menuAction()) self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuHelp.menuAction()) self.toolBar.addAction(self.actionHome) self.toolBar.addAction(self.actionBack) self.toolBar.addAction(self.actionForward) self.toolBar.addWidget(self.urlLineEdit) self.toolBar.addAction(self.actionStop) self.toolBar.addAction(self.actionReload) self.retranslateUi() QMetaObject.connectSlotsByName(self) self.setWindowTitle(self.name) # Set up cookie jar that persists sessions self.cookieJar = PersistableCookieJar(self, identifier=self.appid) self.cookieJar.load() self.webViewMain.page().networkAccessManager().setCookieJar( self.cookieJar) # Set up link delegation so that external links open in web browser. self.webViewMain.page().setLinkDelegationPolicy( QWebPage.DelegateExternalLinks) self.desktopEntry = desktop.getEntry(self.appid) # Set icons for actions; this can't be done in the designer, AFAICT self.actionHome.setIcon(QIcon.fromTheme('go-home')) self.actionAbout.setIcon(QIcon.fromTheme('help-about')) # Set up shortcuts self.actionStop.setShortcut(Qt.Key_Escape) self.actionBack.setShortcut(QKeySequence.Back) self.actionForward.setShortcut(QKeySequence.Forward) self.actionReload.setShortcut(QKeySequence.Refresh) self.actionHome.setShortcut('Ctrl+Home') self.actionShowMenu.setShortcut('Ctrl+m') self.actionShowToolbar.setShortcut('Ctrl+t') self.actionPrint.setShortcut(QKeySequence.Print) self.backShortcut = QShortcut(self) self.backShortcut.setKey(Qt.Key_Back) self.backShortcut.activated.connect(self.webViewMain.back) self.forwardShortcut = QShortcut(self) self.forwardShortcut.setKey(Qt.Key_Forward) self.forwardShortcut.activated.connect(self.webViewMain.forward) # Set up context menu self.webViewMain.setContextMenuPolicy(Qt.CustomContextMenu) self.webViewMain.customContextMenuRequested.connect(self.showMenu) # Setup statusbar and toolbar for c in self.statusBar().children()[0].children(): c.removeWidget(c) self.statusBar().addPermanentWidget(self.progressBar, 1) self.actionShowToolbar.setChecked(True) self.actionShowMenu.setChecked(True) # Icon if self.desktopEntry.hasKey('Icon'): self.icon = QIcon(self.desktopEntry.get('Icon')) self.setWindowIcon(self.icon) else: self.webViewMain.iconChanged.connect(self.setWindowIcon) # Set up events if self.desktopEntry.get('X-%s-menu-enabled' % APP_NAME) == '0': self.actionShowMenu.setChecked(False) else: self.actionShowMenu.setChecked(True) if self.desktopEntry.get('X-%s-toolbar-enabled' % APP_NAME) == '0': self.actionShowToolbar.setChecked(False) else: self.actionShowToolbar.setChecked(True) self.webViewMain.linkClicked.connect(self._onLinkClick) self.webViewMain.titleChanged.connect(self.setWindowTitle) self.webViewMain.loadProgress.connect(self._setLoadingStatus) self.webViewMain.urlChanged.connect( lambda x: self.urlLineEdit.setText(x.toString())) self.page.printRequested.connect(self._onPrint) self.page.loadFinished.connect(self._loadingFinished) self.actionHome.triggered.connect( lambda x: self.webViewMain.load(QUrl(self.base))) self.actionClose.triggered.connect(self.close) self.actionPrint.triggered.connect(self._onPrint) self.urlLineEdit.returnPressed.connect(self._onUrlEdit) self.actionShowToolbar.triggered.connect(self._onShowToolbar) self.actionShowMenu.triggered.connect(self._onShowMenu) self.actionAbout.triggered.connect(lambda x: about.show(self)) self.actionModifyWebapp.triggered.connect(self._onModify) self._onShowMenu() self._onShowToolbar() try: self.resize(int(self.desktopEntry.getWindowWidth()), int(self.desktopEntry.getWindowHeight())) except (ValueError, TypeError): self.resize(800, 600) # Load first page self.webViewMain.load(QUrl(base)) self.editor = SiteEditorWindow(self.desktopEntry, isNew=False)
def insertLayout(self): def createPixmapWidget(self, parent, iconName): w = QLabel(parent) parent.layout().addWidget(w) w.setFixedSize(16, 16) w.hide() if os.path.exists(iconName): w.setPixmap(QPixmap(iconName)) return w self.setLayout(QVBoxLayout()) self.layout().setMargin(2) self.warning_bar = gui.widgetBox(self, orientation="horizontal", margin=0, spacing=0) self.warning_icon = gui.widgetLabel(self.warning_bar, "") self.warning_label = gui.widgetLabel(self.warning_bar, "") self.warning_label.setStyleSheet("padding-top: 5px") self.warning_bar.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Maximum) gui.rubber(self.warning_bar) self.warning_bar.setVisible(False) self.topWidgetPart = gui.widgetBox(self, orientation="horizontal", margin=0) self.leftWidgetPart = gui.widgetBox(self.topWidgetPart, orientation="vertical", margin=0) if self.want_main_area: self.leftWidgetPart.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding)) self.leftWidgetPart.updateGeometry() self.mainArea = gui.widgetBox(self.topWidgetPart, orientation="vertical", sizePolicy=QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Expanding), margin=0) self.mainArea.layout().setMargin(4) self.mainArea.updateGeometry() if self.want_control_area: self.controlArea = gui.widgetBox(self.leftWidgetPart, orientation="vertical", margin=4) if self.want_graph and self.show_save_graph: graphButtonBackground = gui.widgetBox(self.leftWidgetPart, orientation="horizontal", margin=4) self.graphButton = gui.button(graphButtonBackground, self, "&Save Graph") self.graphButton.setAutoDefault(0) if self.want_status_bar: self.widgetStatusArea = QFrame(self) self.statusBarIconArea = QFrame(self) self.widgetStatusBar = QStatusBar(self) self.layout().addWidget(self.widgetStatusArea) self.widgetStatusArea.setLayout(QHBoxLayout(self.widgetStatusArea)) self.widgetStatusArea.layout().addWidget(self.statusBarIconArea) self.widgetStatusArea.layout().addWidget(self.widgetStatusBar) self.widgetStatusArea.layout().setMargin(0) self.widgetStatusArea.setFrameShape(QFrame.StyledPanel) self.statusBarIconArea.setLayout(QHBoxLayout()) self.widgetStatusBar.setSizeGripEnabled(0) self.statusBarIconArea.hide() self._warningWidget = createPixmapWidget( self.statusBarIconArea, os.path.join(environ.widget_install_dir, "icons/triangle-orange.png")) self._errorWidget = createPixmapWidget( self.statusBarIconArea, os.path.join(environ.widget_install_dir, "icons/triangle-red.png"))
def __init__(self, parent=None): super().__init__(parent) # Load saved application settings self.recentNotes = [] self.numberOfTabs = 0 # keep track of the total number of tabs in the window self.currentPage = None self.__mediator = MITM.Mediator.Mediator( ) # the mediator object. intermediary btwn view and model # create a timer timer = QTimer(self) # dialogs: saved to avoid eating memory by constant cre- and re- creation self.findDialog = None self.renameDialog = None self.helpAboutDialog = HelpAboutDialog(self) self.helpHelpDialog = HelpHelpDialog(self) self.recentFilesListWidget = QListWidget # create menus first self.fileMenu = self.menuBar().addMenu("File") self.recentNotesMenu = self.fileMenu.addMenu("Open Recent") self.editMenu = self.menuBar().addMenu("Edit") self.syncMenu = self.menuBar().addMenu("Sync") self.helpMenu = self.menuBar().addMenu("Help") # region Actions # create the menu actions # first the file menu actions fileNewAct = self.createAction(self, "&New", shortcut=QKeySequence.New, tooltip="Create a new note", enabled=True, slot=self.onNewClick) fileOpenRecentNotesAct = self.createAction(self, "&Open Recent Note", tooltip="open recent notes", enabled=True, slot=self.onOpenRecentNotes) fileQuitAct = self.createAction(self, "&Exit", shortcut=QKeySequence.Quit, tooltip="Exit the application", enabled=True, slot=self.close) # recent files menu actions self.recentFilesMenuAct = self.createAction(self.recentNotesMenu, "File 1") # edit menu actions editInsertAct = self.createAction(self, "Ins&ert...", shortcut="Ctrl+I", tooltip="Insert a media file", enabled=True) editPreferencesAct = self.createAction( self, "&Preferences", shortcut="Ctrl+Shift+P", tooltip="Set application preferences", enabled=True) editFindAct = self.createAction(self, "&Find", shortcut=QKeySequence.Find, tooltip="Find a text string", slot=self.onFind) editUndoAct = self.createAction( self, "&Undo", shortcut=QKeySequence.Undo, tooltip="Roll back changes to document", slot=self.onUndo) editRedoAct = self.createAction(self, "&Redo", shortcut=QKeySequence.Redo, tooltip="Repeat the last action", slot=self.onRedo) editRenameAct = self.createAction(self, "&Rename...", shortcut="Ctrl+Shift+R", tooltip="Rename current note", slot=self.onRenameNote) # sync menu actions synCloudAcctAct = self.createAction(self, "Cloud &Account", shortcut="Alt+A", tooltip="Sync with cloud accounts", enabled=True) # help menu actions helpHelpAct = self.createAction(self, "Help", shortcut=QKeySequence.HelpContents, tooltip="Display help", enabled=True, slot=self.onHelpHelp) helpAboutAct = self.createAction(self, "A&bout", shortcut="Ctrl+Shift+B", tooltip="About application", enabled=True, slot=self.onHelpAbout) boldTextAction = self.createAction(self, "B", shortcut="Ctrl+B", tooltip="Bold text") italicsTextAction = self.createAction(self, "<i>I</i>", shortcut="Ctrl+I", tooltip="Italics text") # endregion # add actions to corresponding menu self.addActions_( self.fileMenu, (fileNewAct, fileOpenRecentNotesAct, fileQuitAct)) # to file menu self.addActions_(self.editMenu, (editRenameAct, editUndoAct, editRedoAct, editFindAct, editInsertAct, editPreferencesAct)) # to edit menu self.addActions_(self.helpMenu, (helpHelpAct, helpAboutAct)) # to help menu self.addActions_(self.recentNotesMenu, (self.recentFilesMenuAct, )) # create tool bar and add relevant actions allToolBar = self.addToolBar( "All Tools" ) # tool bar that contains all tool;not separated into file/edit/* self.addActions_(allToolBar, (fileNewAct, synCloudAcctAct, editInsertAct, editFindAct, editUndoAct, editRedoAct)) fontDetailsToolBar = self.addToolBar("Font Details") self.fontTypeComboBox = QFontComboBox( fontDetailsToolBar) # get font list present on the user system self.fontSizeSpinBox = QSpinBox(fontDetailsToolBar) # size of the font self.fontSizeSpinBox.setMinimum(7) self.fontSizeSpinBox.setValue(12) self.textBoldButton = QPushButton("B") self.addNewNoteButton = QPushButton("+") self.textItalicsButton = QPushButton("I") maskLabel = QLabel( fontDetailsToolBar) # TODO: experimental, to be removed pixmap = QPixmap("Asset/guit.png") # TODO: experimental, remove maskLabel.setPixmap(pixmap.mask()) # TODO: experimental, remove self.addWidgetToToolBar(fontDetailsToolBar, (self.fontTypeComboBox, self.fontSizeSpinBox, self.textBoldButton, self.textItalicsButton)) # self.addActions_(fontDetailsToolBar, (boldTextAction, italicsTextAction)) # create a QTabWidget self.tabWidget = QTabWidget(self) self.tabWidget.setMovable(True) self.tabWidget.setTabsClosable(True) self.tabWidget.setTabPosition(QTabWidget.South) # self.setTabPosition(Qt.BottomDockWidgetArea, QTabWidget.South) # TODO: not working yet. Handled self.tabWidgetTabBar = self.tabWidget.tabBar() self.tabWidget.setCornerWidget(self.addNewNoteButton, Qt.TopRightCorner) # create pages # TODO: let an event handler handle this job: HANDLED self.onWindowStartOpenNote() # self.page1 = View.TabbedPage.TabbedPage(self, Note("First", "/path")) # # add the pages to the tab Widget # self.tabWidget.addTab(self.page1, "Note 1 ") # self.currentPage = self.tabWidget.currentWidget() self.setCurrentPage() # print("count() returned: ", self.tabWidget.count()) # create "+" bar: TODO: find a better way to create a plus tab: DONE # self.plusTabIndex = self.tabWidgetTabBar.insertTab(self.tabWidget.count() + 1, # "+") # this tab bears the "+" sign that indicates 'create new tab' # self.plusTabWidget = self.tabWidget.widget(self.plusTabIndex) # get a reference to the plus tab widget # create Dock widget that holds find dialog # self.dockWidget = QDockWidget(self) # self.dockWidget.setAllowedAreas(Qt.TopDockWidgetArea) # self.dockWidget.setFeatures(QDockWidget.DockWidgetClosable|QDockWidget.DockWidgetMovable) # self.dockWidget.setWidget(FindDialog.FindDialog(self.currentPage, self)) # self.dockWidget.hide() # do window namings and other stuffs self.statusbar = QStatusBar(self) self.statusbar.setSizeGripEnabled(False) self.setStatusBar(self.statusbar) self.setCentralWidget(self.tabWidget) self.setWindowTitle("Notes") # region Signal And Slot Bindings self.tabWidget.currentChanged.connect(self.setCurrentPage) # self.currentPage.firstTime.connect(self.openPageOnFirstNavigation) self.tabWidget.currentChanged.connect( self.notifyMediatorOfCurrentPageChange) # fileNewAct.triggered.connect(self.onNewClick) # fileQuitAct.triggered.connect(self.close) self.tabWidget.tabCloseRequested.connect( self.confirmTabCloseAndCloseTab) # self.tabWidget.tabCloseRequested.connect(self.holla) self.fontTypeComboBox.currentFontChanged.connect(self.changeFont) self.fontSizeSpinBox.valueChanged.connect(self.changeFontSize) self.textBoldButton.clicked.connect(self.toggleTextBold) self.textItalicsButton.clicked.connect(self.toggleTextItalics) timer.timeout.connect(self.onSaveClick) timer.timeout.connect(self.timed) self.addNewNoteButton.clicked.connect(self.onNewClick) self.currentPage.cursorPositionChanged.connect( self.reportCurrentCursor) self.recentNotesMenu.aboutToShow.connect(self.updateRecentNotesMenu) # editUndoAct.triggered.connect(self.currentPage.undo) # editRedoAct.triggered.connect(self.currentPage.redo) # endregion self.readSettings() # QTimer.singleShot(5000, self.onSaveClick) # Start the timer timer.start(1500000)