def initUI(self): grid = QGridLayout() grid.setHorizontalSpacing(2) grid.setVerticalSpacing(2) # Reference # https://stackoverflow.com/questions/16673074/how-can-i-fully-disable-resizing-a-window-including-the-resize-icon-when-the-mou grid.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(grid) # This is register self.ent = Register() # This is display value of register self.lcd = QLCDNumber(self) self.lcd.setDigitCount(self.max_chars + 2) self.lcd.setSmallDecimalPoint(True) self.lcd.display(self.ent.get_text()) self.lcd.setStyleSheet("QLCDNumber {color:darkgreen;}") self.lcd.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) grid.addWidget(self.lcd, 0, 0, 1, 4) grid.setRowMinimumHeight(0, 40) for key in self.keys_info: but = QPushButton(key['label']) method_name = key['method'] method = getattr(self, method_name) but.clicked.connect(method) but.setStyleSheet( "QPushButton {font-size:12pt; padding:5px 30px; color:#666;}") but.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) grid.addWidget(but, key['y'], key['x'], key['h'], key['w'])
def __init__(self, parent=None): super().__init__(parent) settings = QSettings() layout = QGridLayout(self) layout.setSizeConstraint(QLayout.SetFixedSize) layout.addWidget(QLabel("CyKit address:"), 0, 0) self.cykit_address_field = QLineEdit() self.cykit_address_field.setText(settings.value('CyKitAddress')) self.cykit_address_field.setPlaceholderText(app.DEFAULT_CYKIT_ADDRESS) layout.addWidget(self.cykit_address_field, 0, 1, 1, 2) layout.addWidget(QLabel("CyKit port:"), 1, 0) self.cykit_port_field = QLineEdit() self.cykit_port_field.setText(settings.value('CyKitPort')) self.cykit_port_field.setPlaceholderText(str(app.DEFAULT_CYKIT_PORT)) layout.addWidget(self.cykit_port_field, 1, 1, 1, 2) cancel_button = QPushButton("Cancel") cancel_button.clicked.connect(self.reject) layout.addWidget(cancel_button, 2, 1) ok_button = QPushButton("OK") ok_button.clicked.connect(self.accept) layout.addWidget(ok_button, 2, 2) self.setLayout(layout) self.setWindowTitle("Preferences")
class Funcoes: def limpa_formulario(self, frm): for i in reversed(range(len(frm.children()))): frm.children()[i].deleteLater() print(frm.layout()) def set_grid_layout_conteudo(self, frame): self.grl_fra_conteudo = QGridLayout(frame) self.grl_fra_conteudo.setSpacing(0) self.grl_fra_conteudo.setObjectName(u"grl_fra_conteudo") self.grl_fra_conteudo.setSizeConstraint(QLayout.SetMinimumSize) self.grl_fra_conteudo.setContentsMargins(0, 0, 0, 0)
def __init__(self): super(Dialog, self).__init__() self.rotableWidgets = [] self.createRotableGroupBox() self.createOptionsGroupBox() self.createButtonBox() mainLayout = QGridLayout() mainLayout.addWidget(self.rotableGroupBox, 0, 0) mainLayout.addWidget(self.optionsGroupBox, 1, 0) mainLayout.addWidget(self.buttonBox, 2, 0) mainLayout.setSizeConstraint(QLayout.SetMinimumSize) self.mainLayout = mainLayout self.setLayout(self.mainLayout) self.setWindowTitle("Dynamic Layouts")
def __init__(self): super(Dialog, self).__init__() self.rotableWidgets = [] self.createRotableGroupBox() self.createOptionsGroupBox() self.createButtonBox() mainLayout = QGridLayout() mainLayout.addWidget(self.rotableGroupBox, 0, 0) mainLayout.addWidget(self.optionsGroupBox, 1, 0) mainLayout.addWidget(self.buttonBox, 2, 0) mainLayout.setSizeConstraint(QLayout.SetMinimumSize) self.mainLayout = mainLayout self.setLayout(self.mainLayout) self.setWindowTitle("Dynamic Layouts")
def __init__(self): super(Window, self).__init__() self.createCalendarBox() self.setup_database_dialog() self.database_utilities() self.ready_plots() layout = QGridLayout() layout.addWidget(self.db_dialog_groupbox, 0, 0) layout.addWidget(self.previewGroupBox, 0, 1) layout.addWidget(self.db_util_groupbox, 1, 0) layout.addWidget(self.ready_plt_groupbox, 1, 1) layout.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(layout) self.previewLayout.setRowMinimumHeight(0, self.calendar.sizeHint().height()) self.previewLayout.setColumnMinimumWidth(0, self.calendar.sizeHint().width()) self.setWindowTitle("Data Visualization Application")
class MainWindow(QMainWindow): def __init__(self): super().__init__() w = QWidget() hb = QHBoxLayout() hb.setSizeConstraint(QLayout.SetFixedSize) self._timer = QTimer() self._timer.timeout.connect(self.update_timer) self._timer.start(1000) # 1 second timer # tag::status[] self.mines = QLabel() self.mines.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.clock = QLabel() self.clock.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) f = self.mines.font() f.setPointSize(24) f.setWeight(75) self.mines.setFont(f) self.clock.setFont(f) self.clock.setText("000") self.button = QPushButton() self.button.setFixedSize(QSize(32, 32)) self.button.setIconSize(QSize(32, 32)) self.button.setIcon(QIcon("./icons/smiley.png")) self.button.setFlat(True) self.button.pressed.connect(self.button_pressed) self.statusBar() l = QLabel() l.setPixmap(QPixmap.fromImage(IMG_BOMB)) l.setAlignment(Qt.AlignRight | Qt.AlignVCenter) hb.addWidget(l) hb.addWidget(self.mines) hb.addWidget(self.button) hb.addWidget(self.clock) l = QLabel() l.setPixmap(QPixmap.fromImage(IMG_CLOCK)) l.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) hb.addWidget(l) vb = QVBoxLayout() vb.setSizeConstraint(QLayout.SetFixedSize) vb.addLayout(hb) # end::status[] # tag::grid[] self.grid = QGridLayout() self.grid.setSpacing(5) self.grid.setSizeConstraint(QLayout.SetFixedSize) # end::grid[] vb.addLayout(self.grid) w.setLayout(vb) self.setCentralWidget(w) self.menuBar().setNativeMenuBar(False) # tag::menuGame[] game_menu = self.menuBar().addMenu("&Game") new_game_action = QAction("New game", self) new_game_action.setStatusTip( "Start a new game (your current game will be lost)" ) new_game_action.triggered.connect(self.reset_map) game_menu.addAction(new_game_action) levels = game_menu.addMenu("Levels") for n, level in enumerate(LEVELS): level_action = QAction(level[0], self) level_action.setStatusTip("{1}x{1} grid, with {2} mines".format(*level)) level_action.triggered.connect(lambda _, n=n: self.set_level(n)) levels.addAction(level_action) # end::menuGame[] # Start on easy self.set_level(0) self.show() # tag::levelsInit[] def set_level(self, level): self.level_name, self.b_size, self.n_mines = LEVELS[level] self.setWindowTitle("Moonsweeper - %s" % (self.level_name)) self.mines.setText("%03d" % self.n_mines) self.clear_map() self.init_map() self.reset_map() # end::levelsInit[] # tag::clearMap[] def clear_map(self): # Remove all positions from the map, up to maximum size. for x in range(0, LEVELS[-1][1]): # <1> for y in range(0, LEVELS[-1][1]): c = self.grid.itemAtPosition(y, x) if c: # <2> self.grid.removeItem(c) c.widget().setParent(None) # end::clearMap[] # tag::initMap[] def init_map(self): # Add positions to the map for x in range(0, self.b_size): for y in range(0, self.b_size): w = Pos(x, y) self.grid.addWidget(w, y, x) # Connect signal to handle expansion. w.clicked.connect(self.trigger_start) w.revealed.connect(self.on_reveal) w.expandable.connect(self.expand_reveal) # Place resize on the event queue, giving control back to Qt before. QTimer.singleShot(0, lambda: self.resize(1, 1)) # <1> # end::initMap[] # tag::resetMap[] def reset_map(self): self._reset_position_data() self._reset_add_mines() self._reset_calculate_adjacency() self._reset_add_starting_marker() self.update_timer() # end::resetMap[] # tag::resetMap1[] def _reset_position_data(self): # Clear all mine positions for x in range(0, self.b_size): for y in range(0, self.b_size): w = self.grid.itemAtPosition(y, x).widget() w.reset() # end::resetMap1[] # tag::resetMap2[] def _reset_add_mines(self): # Add mine positions positions = [] while len(positions) < self.n_mines: x, y = ( random.randint(0, self.b_size - 1), random.randint(0, self.b_size - 1), ) if (x, y) not in positions: w = self.grid.itemAtPosition(y, x).widget() w.is_mine = True positions.append((x, y)) # Calculate end-game condition self.end_game_n = (self.b_size * self.b_size) - (self.n_mines + 1) return positions # end::resetMap2[] # tag::resetMap3[] def _reset_calculate_adjacency(self): def get_adjacency_n(x, y): positions = self.get_surrounding(x, y) return sum(1 for w in positions if w.is_mine) # Add adjacencies to the positions for x in range(0, self.b_size): for y in range(0, self.b_size): w = self.grid.itemAtPosition(y, x).widget() w.adjacent_n = get_adjacency_n(x, y) # end::resetMap3[] # tag::resetMap4[] def _reset_add_starting_marker(self): # Place starting marker. # Set initial status (needed for .click to function) self.update_status(STATUS_READY) while True: x, y = ( random.randint(0, self.b_size - 1), random.randint(0, self.b_size - 1), ) w = self.grid.itemAtPosition(y, x).widget() # We don't want to start on a mine. if not w.is_mine: w.is_start = True w.is_revealed = True w.update() # Reveal all positions around this, if they are not mines either. for w in self.get_surrounding(x, y): if not w.is_mine: w.click() break # Reset status to ready following initial clicks. self.update_status(STATUS_READY) # end::resetMap4[] # tag::surrounding[] def get_surrounding(self, x, y): positions = [] for xi in range(max(0, x - 1), min(x + 2, self.b_size)): for yi in range(max(0, y - 1), min(y + 2, self.b_size)): if not (xi == x and yi == y): positions.append(self.grid.itemAtPosition(yi, xi).widget()) return positions # end::surrounding[] # tag::statusButton[] def button_pressed(self): if self.status == STATUS_PLAYING: self.game_over() elif self.status == STATUS_FAILED or self.status == STATUS_SUCCESS: self.reset_map() # end::statusButton[] def reveal_map(self): for x in range(0, self.b_size): for y in range(0, self.b_size): w = self.grid.itemAtPosition(y, x).widget() w.reveal(False) # tag::expandReveal[] def expand_reveal(self, x, y): """ Iterate outwards from the initial point, adding new locations to the queue. This allows us to expand all in a single go, rather than relying on multiple callbacks. """ to_expand = [(x, y)] to_reveal = [] any_added = True while any_added: any_added = False to_expand, l = [], to_expand for x, y in l: positions = self.get_surrounding(x, y) for w in positions: if not w.is_mine and w not in to_reveal: to_reveal.append(w) if w.adjacent_n == 0: to_expand.append((w.x, w.y)) any_added = True # Iterate an reveal all the positions we have found. for w in to_reveal: w.reveal() # end::expandReveal[] def trigger_start(self, *args): if self.status == STATUS_READY: # First click. self.update_status(STATUS_PLAYING) # Start timer. self._timer_start_nsecs = int(time.time()) # tag::updateStatus[] def update_status(self, status): self.status = status self.button.setIcon(QIcon(STATUS_ICONS[self.status])) if status == STATUS_READY: self.statusBar().showMessage("Ready") # end::updateStatus[] def update_timer(self): if self.status == STATUS_PLAYING: n_secs = int(time.time()) - self._timer_start_nsecs self.clock.setText("%03d" % n_secs) elif self.status == STATUS_READY: self.clock.setText("%03d" % 0) # tag::endGame[] def on_reveal(self, w): if w.is_mine: self.game_over() else: self.end_game_n -= 1 # decrement remaining empty spaces if self.end_game_n == 0: self.game_won() def game_over(self): self.reveal_map() self.update_status(STATUS_FAILED) def game_won(self): self.reveal_map() self.update_status(STATUS_SUCCESS)
class PropertiesWidget(QWidget): def __init__(self, parent, obj): super(PropertiesWidget, self).__init__() self.obj = obj self.parent = parent self.grid = QGridLayout() self.grid.setSizeConstraint(self.grid.SetMinAndMaxSize) title = Label("Propriété : " + self.obj.type_, 16) title.setMaximumHeight(80) title.setMinimumHeight(80) title.setAlignment(Qt.AlignHCenter) self.grid.addWidget(title, 0, 0, 1, 2) self.grid.setRowStretch(0, 1) nb = 1 for p in get_properties(self.obj.type_): label = Label(p[0], 12) label.setMaximumHeight(50) label.setMinimumHeight(50) self.grid.addWidget(label, nb, 0) if p[1] == "str": widget = QLineEdit() if p[0] == "Nom": widget.setText(self.obj.name) else: widget.setText(self.obj.properties.get(p[0], "")) widget.textChanged.connect( lambda text="", prop=p[0]: self.set_text_for(text, prop)) elif p[1] == "bool": widget = QCheckBox() if self.obj.properties.get(p[0], False): widget.setChecked(True) widget.stateChanged.connect( lambda state=0, prop=p[0]: self.set_bool_for(state, prop)) elif p[1] == "int": widget = QSpinBox() widget.setMaximum(3000) widget.setMinimum(-3000) widget.setValue(self.obj.properties.get(p[0], 0)) widget.valueChanged.connect( lambda value=0, prop=p[0]: self.set_int_for(value, prop)) elif "|" in p[1] and p[1].split("|")[0] == "list": widget = QComboBox() for i in p[1].split("|")[1].split(", "): widget.addItem(i) widget.setCurrentText( self.obj.properties.get(p[0], p[1].split("|")[1].split(", ")[0])) widget.currentTextChanged.connect( lambda value="", prop=p[0]: self.set_text_for(value, prop)) elif p[1] == "color": widget = QPushButton("Sélectionner") widget.clicked.connect( lambda checked=False, prop=p[0]: self.set_color_for(prop)) elif p[1] == "colorNone": widget = QWidget() layout = QGridLayout() select = QPushButton("Sélectionner") select.clicked.connect( lambda checked=False, prop=p[0]: self.set_color_for(prop)) delete = QPushButton("Supprimer") delete.clicked.connect( lambda checked=False, prop=p[0]: self.set_none_for(prop)) layout.addWidget(select, 0, 0) layout.addWidget(delete, 0, 1) widget.setLayout(layout) elif p[1] == "file": widget = QPushButton("Sélectionner") widget.clicked.connect( lambda checked=False, prop=p[0]: self.set_file_for(prop)) elif p[1] == "fileNone": widget = QWidget() layout = QGridLayout() select = QPushButton("Sélectionner") select.clicked.connect( lambda checked=False, prop=p[0]: self.set_file_for(prop)) delete = QPushButton("Supprimer") delete.clicked.connect( lambda checked=False, prop=p[0]: self.set_none_for(prop)) layout.addWidget(select, 0, 0) layout.addWidget(delete, 0, 1) widget.setLayout(layout) elif p[1] == "files": widget = QPushButton("Sélectionner") widget.clicked.connect( lambda checked=False, prop=p[0]: self.set_files_for(prop)) else: raise TypeError("Unknown type for properties : " + p[1]) self.grid.addWidget(widget, nb, 1) self.grid.setRowStretch(nb, 1) nb += 1 scripting = QPushButton("Modifier Script") scripting.clicked.connect(self.edit_script) self.grid.addWidget(scripting, nb, 0, 1, 2) end_spacer = QSpacerItem(20, 20, QSizePolicy.Preferred, QSizePolicy.Expanding) self.grid.addItem(end_spacer, nb + 1, 0) for i in range(0, 2): self.grid.setColumnStretch(i, 1) self.setLayout(self.grid) def edit_script(self): if self.obj.type_ != "None": self.parent.editor = Editor(self.parent, self.obj) self.parent.editor.showMaximized() self.parent.affichage.update_screen() def set_text_for(self, text, prop): self.obj.set_property(prop, text) if prop == "Nom": if self.parent.project.objects[0].properties[ "Monde Actuel"] == self.obj.name: self.parent.project.objects[0].properties[ "Monde Actuel"] = text element = self.parent.elements.get_item(self.obj.name) if element is not None: element.setText(0, text) self.obj.name = text self.parent.affichage.update_screen() def set_bool_for(self, state, prop): self.obj.set_property(prop, bool(state)) self.parent.affichage.update_screen() def set_int_for(self, value, prop): self.obj.set_property(prop, value) self.parent.affichage.update_screen() def set_none_for(self, prop): self.obj.set_property(prop, None) self.parent.affichage.update_screen() def set_file_for(self, prop): directory = os.environ.get( 'HOME', os.environ.get('USERPROFILE', os.path.dirname(__file__))) self.obj.set_property( prop, QFileDialog.getOpenFileName(self, "Fichier : " + prop, directory)[0]) self.parent.affichage.update_screen() def set_files_for(self, prop): directory = os.environ.get( 'HOME', os.environ.get('USERPROFILE', os.path.dirname(__file__))) self.obj.set_property( prop, QFileDialog.getOpenFileNames(self, "Fichiers : " + prop, directory)[0]) self.parent.affichage.update_screen() def set_color_for(self, prop): if self.obj.properties[prop] is not None: qcolor = QColorDialog.getColor(QColor(*self.obj.properties[prop])) else: qcolor = QColorDialog.getColor() self.obj.set_property( prop, [qcolor.red(), qcolor.green(), qcolor.blue()]) self.parent.affichage.update_screen()
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.resize(1280, 720) self.central_widget = QWidget(MainWindow) self.splitter = QSplitter(self.central_widget) self.splitter.setChildrenCollapsible(False) self.splitter.setOpaqueResize(True) self.main_grid_layout = QGridLayout(self.central_widget) self.main_grid_layout.addWidget(self.splitter) self.main_grid_layout.setSizeConstraint(QLayout.SetDefaultConstraint) self.tab_widget = QTabWidget(self.central_widget) self.tab_widget.setMinimumSize(QSize(500, 0)) self._set_up_component_tree_view() self.splitter.addWidget(self.tab_widget) self._set_up_3d_view() MainWindow.setCentralWidget(self.central_widget) self._set_up_menus(MainWindow) self.tab_widget.setCurrentIndex(0) QMetaObject.connectSlotsByName(MainWindow) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 1) def _set_up_3d_view(self): self.sceneWidget.setMinimumSize(QSize(600, 0)) self.splitter.addWidget(self.sceneWidget) def _set_up_component_tree_view(self): self.sceneWidget = InstrumentView(self.splitter) self.component_tree_view_tab = ComponentTreeViewTab( scene_widget=self.sceneWidget, parent=self ) self.tab_widget.addTab(self.component_tree_view_tab, "") def _set_up_menus(self, MainWindow: QObject): self.menu_bar = QMenuBar() self.menu_bar.setGeometry(QRect(0, 0, 1280, 720)) self.file_menu = QMenu(self.menu_bar) MainWindow.setMenuBar(self.menu_bar) self.status_bar = QStatusBar(MainWindow) MainWindow.setStatusBar(self.status_bar) self.open_json_file_action = QAction(MainWindow) self.open_json_file_action.setShortcut(QKeySequence("Ctrl+O")) self.export_to_filewriter_JSON_action = QAction(MainWindow) self.export_to_filewriter_JSON_action.setShortcut(QKeySequence("Ctrl+S")) self.file_menu.addAction(self.open_json_file_action) self.file_menu.addAction(self.export_to_filewriter_JSON_action) self.view_menu = QMenu(self.menu_bar) self.show_action_labels = QAction(MainWindow) self.show_action_labels.setCheckable(True) self.show_action_labels.setChecked(True) self.simple_tree_view = QAction(MainWindow) self.simple_tree_view.setCheckable(True) self.about_window = QAction(MainWindow) self.view_menu.addAction(self.about_window) self.view_menu.addAction(self.show_action_labels) self.view_menu.addAction(self.simple_tree_view) self.menu_bar.addAction(self.file_menu.menuAction()) self.menu_bar.addAction(self.view_menu.menuAction()) self._set_up_titles(MainWindow) def _set_up_titles(self, MainWindow): MainWindow.setWindowTitle("NeXus Constructor") self.tab_widget.setTabText( self.tab_widget.indexOf(self.component_tree_view_tab), "Nexus Structure" ) self.file_menu.setTitle("File") self.open_json_file_action.setText("Open File writer JSON file") self.export_to_filewriter_JSON_action.setText("Export to File writer JSON") self.view_menu.setTitle("View") self.show_action_labels.setText("Show Button Labels") self.simple_tree_view.setText("Use Simple Tree Model View") self.about_window.setText("About") self.menu_bar.setNativeMenuBar(False)
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.resize(1280, 720) self.central_widget = QWidget(MainWindow) self.splitter = QSplitter(self.central_widget) self.splitter.setChildrenCollapsible(False) self.splitter.setOpaqueResize(True) self.main_grid_layout = QGridLayout(self.central_widget) self.main_grid_layout.addWidget(self.splitter) self.main_grid_layout.setSizeConstraint(QLayout.SetDefaultConstraint) self.tab_widget = QTabWidget(self.central_widget) self.tab_widget.setMinimumSize(QSize(500, 0)) self._set_up_component_tree_view() self._set_up_silx_view() self.splitter.addWidget(self.tab_widget) self._set_up_3d_view() MainWindow.setCentralWidget(self.central_widget) self._set_up_menus(MainWindow) self.tab_widget.setCurrentIndex(0) QMetaObject.connectSlotsByName(MainWindow) self.splitter.setStretchFactor(0, 0) self.splitter.setStretchFactor(1, 1) def _set_up_3d_view(self): self.sceneWidget = InstrumentView(self.splitter) self.sceneWidget.setMinimumSize(QSize(600, 0)) self.splitter.addWidget(self.sceneWidget) def _set_up_silx_view(self): self.silx_tab = QWidget() self.silx_tab_layout = QGridLayout(self.silx_tab) self.tab_widget.addTab(self.silx_tab, "") def _set_up_component_tree_view(self): self.component_tree_view_tab = ComponentTreeViewTab(parent=self) self.tab_widget.addTab(self.component_tree_view_tab, "") def _set_up_menus(self, MainWindow): self.menu_bar = QMenuBar() self.menu_bar.setGeometry(QRect(0, 0, 1280, 720)) self.file_menu = QMenu(self.menu_bar) MainWindow.setMenuBar(self.menu_bar) self.status_bar = QStatusBar(MainWindow) MainWindow.setStatusBar(self.status_bar) self.open_nexus_file_action = QAction(MainWindow) self.open_json_file_action = QAction(MainWindow) self.open_idf_file_action = QAction(MainWindow) self.export_to_nexus_file_action = QAction(MainWindow) self.export_to_filewriter_JSON_action = QAction(MainWindow) self.export_to_forwarder_JSON_action = QAction(MainWindow) self.file_menu.addAction(self.open_nexus_file_action) self.file_menu.addAction(self.open_json_file_action) self.file_menu.addAction(self.open_idf_file_action) self.file_menu.addAction(self.export_to_nexus_file_action) self.file_menu.addAction(self.export_to_filewriter_JSON_action) self.file_menu.addAction(self.export_to_forwarder_JSON_action) self.menu_bar.addAction(self.file_menu.menuAction()) self._set_up_titles(MainWindow) def _set_up_titles(self, MainWindow): MainWindow.setWindowTitle("NeXus Constructor") self.tab_widget.setTabText( self.tab_widget.indexOf(self.component_tree_view_tab), "Components" ) self.tab_widget.setTabText( self.tab_widget.indexOf(self.silx_tab), "NeXus File Layout" ) self.file_menu.setTitle("File") self.open_nexus_file_action.setText("Open NeXus file") self.open_json_file_action.setText("Open Filewriter JSON file") self.open_idf_file_action.setText("Open Mantid IDF file") self.export_to_nexus_file_action.setText("Export to NeXus file") self.export_to_filewriter_JSON_action.setText("Export to Filewriter JSON") self.export_to_forwarder_JSON_action.setText("Export to Forwarder JSON")
class Window(QDialog): def __init__(self): super(Window, self).__init__() self.label = QLabel('Enter Your Age') self.lineEdit = QLineEdit() self.label1 = QLabel('Year of Birth') self.combo1 = QComboBox() self.okButton = QPushButton('OK') self.moreButton = QPushButton('More') self.moreButton.setCheckable(True) self.groupBox = QGroupBox() self.groupBox.setTitle('Details') self.nameLabel = QLabel('Name') self.nameLineEdit = QLineEdit() self.label3 = QLabel('Year of Birth') self.combo2 = QComboBox() self.topLayout1 = QHBoxLayout() self.topLayout1.addWidget(self.label) self.topLayout1.addWidget(self.lineEdit) self.topLayout2 = QHBoxLayout() self.topLayout2.addWidget(self.label1) self.topLayout2.addWidget(self.combo1) for x in range(ord('A'), ord('F')): self.combo1.addItem(str(chr(x))) self.leftLayout = QVBoxLayout() self.leftLayout.addLayout(self.topLayout1) self.leftLayout.addLayout(self.topLayout2) self.leftLayout.addStretch() self.rightLayout = QVBoxLayout() self.rightLayout.addWidget(self.okButton) self.rightLayout.addWidget(self.moreButton) self.bottomLayout1 = QHBoxLayout() self.bottomLayout1.addWidget(self.nameLabel) self.bottomLayout1.addWidget(self.nameLineEdit) self.bottomLayout2 = QHBoxLayout() self.bottomLayout2.addWidget(self.label3) self.bottomLayout2.addWidget(self.combo2) self.combo2.addItem("None") self.bottomLayout = QVBoxLayout() self.bottomLayout.addLayout(self.bottomLayout1) self.bottomLayout.addLayout(self.bottomLayout2) self.groupBox.setLayout(self.bottomLayout) self.groupBox.setVisible(False) self.moreButton.toggled.connect(lambda v: self.groupBox.setVisible(v)) self.combo2.setMinimumSize(self.combo2.sizeHint()) self.mainLayout = QGridLayout() self.mainLayout.addLayout(self.leftLayout, 0, 0) self.mainLayout.addLayout(self.rightLayout, 0, 1) # self.mainLayout.addLayout(self.bottomLayout, 1, 0) self.mainLayout.addWidget(self.groupBox) self.mainLayout.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(self.mainLayout) def title(self): return 'Window'
def __init__(self, parent=None): super(Calculator, self).__init__(parent) self.pendingAdditiveOperator = '' self.pendingMultiplicativeOperator = '' self.sumInMemory = 0.0 self.sumSoFar = 0.0 self.factorSoFar = 0.0 self.waitingForOperand = True self.display = QLineEdit('0') self.display.setReadOnly(True) self.display.setAlignment(Qt.AlignRight) self.display.setMaxLength(15) font = self.display.font() font.setPointSize(font.pointSize() + 8) self.display.setFont(font) self.digitButtons = [] for i in range(Calculator.NumDigitButtons): self.digitButtons.append( self.createButton(str(i), self.digitClicked)) self.pointButton = self.createButton(".", self.pointClicked) self.changeSignButton = self.createButton(u"\N{PLUS-MINUS SIGN}", self.changeSignClicked) self.backspaceButton = self.createButton("Backspace", self.backspaceClicked) self.clearButton = self.createButton("C", self.clear) self.clearAllButton = self.createButton("CE", self.clearAll) self.clearMemoryButton = self.createButton("MC", self.clearMemory) self.readMemoryButton = self.createButton("MR", self.readMemory) self.setMemoryButton = self.createButton("MS", self.setMemory) self.addToMemoryButton = self.createButton("M+", self.addToMemory) self.divisionButton = self.createButton( u"\N{DIVISION SIGN}", self.multiplicativeOperatorClicked) self.timesButton = self.createButton( u"\N{MULTIPLICATION SIGN}", self.multiplicativeOperatorClicked) self.minusButton = self.createButton("-", self.additiveOperatorClicked) self.plusButton = self.createButton("+", self.additiveOperatorClicked) self.squareRootButton = self.createButton("Sqrt", self.unaryOperatorClicked) self.powerButton = self.createButton(u"x\N{SUPERSCRIPT TWO}", self.unaryOperatorClicked) self.reciprocalButton = self.createButton("1/x", self.unaryOperatorClicked) self.equalButton = self.createButton("=", self.equalClicked) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addWidget(self.display, 0, 0, 1, 6) mainLayout.addWidget(self.backspaceButton, 1, 0, 1, 2) mainLayout.addWidget(self.clearButton, 1, 2, 1, 2) mainLayout.addWidget(self.clearAllButton, 1, 4, 1, 2) mainLayout.addWidget(self.clearMemoryButton, 2, 0) mainLayout.addWidget(self.readMemoryButton, 3, 0) mainLayout.addWidget(self.setMemoryButton, 4, 0) mainLayout.addWidget(self.addToMemoryButton, 5, 0) for i in range(1, Calculator.NumDigitButtons): row = ((9 - i) / 3) + 2 column = ((i - 1) % 3) + 1 mainLayout.addWidget(self.digitButtons[i], row, column) mainLayout.addWidget(self.digitButtons[0], 5, 1) mainLayout.addWidget(self.pointButton, 5, 2) mainLayout.addWidget(self.changeSignButton, 5, 3) mainLayout.addWidget(self.divisionButton, 2, 4) mainLayout.addWidget(self.timesButton, 3, 4) mainLayout.addWidget(self.minusButton, 4, 4) mainLayout.addWidget(self.plusButton, 5, 4) mainLayout.addWidget(self.squareRootButton, 2, 5) mainLayout.addWidget(self.powerButton, 3, 5) mainLayout.addWidget(self.reciprocalButton, 4, 5) mainLayout.addWidget(self.equalButton, 5, 5) self.setLayout(mainLayout) self.setWindowTitle("Calculator")