def __init__(self): super().__init__() title = QLabel("Analysis Complete!") title.setObjectName("title") self.file_path = QLabel() self.file_path.setWordWrap(True) self.file_path.setObjectName("details") self.file_path.setFixedHeight(50) result = QPushButton("View Results") result.clicked.connect(partial(self.open_result)) start_over = QPushButton("Start Over") start_over.clicked.connect(self.reset) button_layout = QHBoxLayout() button_layout.addWidget(result) button_layout.addWidget(start_over) layout = QVBoxLayout() layout.addWidget(title) layout.addWidget(self.file_path) layout.insertSpacing(3, 75) layout.addLayout(button_layout) self.setLayout(layout)
def __init__(self, parent=None): QWidget.__init__(self, parent) def inttocheck(value): if value: return Qt.Checked return Qt.Unchecked cparser = PuddleConfig() self.extpattern = QLineEdit() self.extpattern.setText( cparser.load('playlist', 'extpattern', '%artist% - %title%')) self.extinfo = QCheckBox( translate("Playlist Settings", '&Write extended info'), self) self.extinfo.stateChanged.connect(self.extpattern.setEnabled) self.extinfo.setCheckState( inttocheck(cparser.load('playlist', 'extinfo', 1, True))) self.extpattern.setEnabled(self.extinfo.checkState()) self.reldir = QCheckBox( translate("Playlist Settings", 'Entries &relative to working directory')) self.reldir.setCheckState( inttocheck(cparser.load('playlist', 'reldir', 0, True))) self.windows_separator = QCheckBox( translate("Playlist Settings", 'Use windows path separator (\\)')) self.windows_separator.setCheckState( inttocheck(cparser.load('playlist', 'windows_separator', 0, True))) self.filename = QLineEdit() self.filename.setText( cparser.load('playlist', 'filepattern', 'puddletag.m3u')) label = QLabel(translate("Playlist Settings", '&Filename pattern.')) label.setBuddy(self.filename) hbox = QHBoxLayout() hbox.addSpacing(10) hbox.addWidget(self.extpattern) vbox = QVBoxLayout() [ vbox.addWidget(z) for z in (self.extinfo, self.reldir, self.windows_separator, label, self.filename) ] vbox.insertLayout(1, hbox) vbox.addStretch() vbox.insertSpacing(3, 5) vbox.insertSpacing(5, 5) self.setLayout(vbox)
def init_ui(self): # v.box box = QVBoxLayout() box.setSpacing(5) box2 = QVBoxLayout() box2.setSpacing(0) l1 = QLabel('Red Discord Bot', self) l1.setFont(QtGui.QFont("Times", 14)) box.addWidget(l1, 0, Qt.AlignTop) box.insertSpacing(1, 10) b1 = QPushButton("Start Red", self) b1.setMinimumWidth(100) box.addWidget(b1, 0, Qt.AlignHCenter) b2 = QPushButton("Start Red Loop", self) b2.setMinimumWidth(100) box.addWidget(b2, 0, Qt.AlignHCenter) box.insertSpacing(4, 10) b3 = QPushButton("Update Red", self) b3.setMinimumWidth(80) box2.addWidget(b3, 0, Qt.AlignHCenter) b4 = QPushButton("Install Requirements", self) b4.setMinimumWidth(120) box2.addWidget(b4, 0, Qt.AlignHCenter) b5 = QPushButton("Maintenance", self) b5.setMinimumWidth(100) box2.addWidget(b5, 0, Qt.AlignHCenter) # b2.setEnabled(False) box.setAlignment(Qt.AlignHCenter) box2.addStretch(5) box.addLayout(box2) self.setLayout(box) # binds b1.clicked.connect(lambda: self.startred(autorestart=False)) b2.clicked.connect(lambda: self.startred(autorestart=True)) b3.clicked.connect(lambda: self.switchwindow(window=UpdateWindow())) b4.clicked.connect( lambda: self.switchwindow(window=RequirementsWindow())) b5.clicked.connect( lambda: self.switchwindow(window=MaintenanceWindow())) # window self.setFixedSize(220, 210) self.setWindowIcon(QtGui.QIcon('red.ico')) self.setWindowTitle('Red Bot') self.show()
def __init__(self, parent=None): super().__init__(parent) outer_container = QWidget() self.email = QLineEdit() self.email.setPlaceholderText('Email') self.email.setFixedSize(300, 25) self.username = QLineEdit() self.username.setPlaceholderText('Username') self.username.setFixedSize(300, 25) self.password = QLineEdit() self.password.setPlaceholderText('Password') self.password.setEchoMode(QLineEdit.Password) self.password.setFixedSize(300, 25) self.confirm_password = QLineEdit() self.confirm_password.setPlaceholderText('Confirm Password') self.confirm_password.setEchoMode(QLineEdit.Password) self.confirm_password.setFixedSize(300, 25) self.error_reporter = QLabel() self.error_reporter.setStyleSheet('color: red;') self.error_reporter.setFixedSize(300, 25) self.register_btn = QPushButton('Register') self.register_btn.clicked.connect(self.emit) self.register_btn.setFixedSize(100, 30) self.back_btn = QPushButton('Back') self.back_btn.clicked.connect(lambda: self.action_chosen.emit(0)) self.back_btn.setFixedSize(100, 30) mlayout = QVBoxLayout() mlayout.setAlignment(Qt.AlignCenter) mlayout.addWidget(outer_container) layout = QVBoxLayout() layout.addWidget(self.email, 0, Qt.AlignCenter) layout.addWidget(self.username, 0, Qt.AlignCenter) layout.addWidget(self.password, 0, Qt.AlignCenter) layout.addWidget(self.confirm_password, 0, Qt.AlignCenter) layout.addWidget(self.error_reporter, 0, Qt.AlignCenter) layout.insertSpacing(5, 20) btn_layout = QHBoxLayout() btn_layout.addWidget(self.back_btn) btn_layout.addWidget(self.register_btn) layout.addLayout(btn_layout) outer_container.setLayout(layout) self.setLayout(mlayout)
def init_ui(self): vbl_0 = QVBoxLayout(self) self.label_title = QLabel(self) font = QFont() font.setPointSize(18) font.setBold(True) self.label_title.setFont(font) self.label_title.setContentsMargins(2, 5, 5, 7) self.label_title.setStyleSheet(Style.h2()) lbl_color = QLabel(" ", self) lbl_color.setStyleSheet(Style.configure_title()) hbox1 = QHBoxLayout() hbox1.addWidget(lbl_color) hbox1.addWidget(self.label_title, 1) self.btn_help = QPushButton(_("Help..."), self) self.btn_help.clicked.connect(self.on_button_help_clicked) hbox1.addWidget(self.btn_help) hbox1.setContentsMargins(0, 0, 0, 5) vbl_0.addLayout(hbox1) vbl_0.insertSpacing(2, 25) grid = QGridLayout() grid.setContentsMargins(0, 0, 0, 0) # left, top, right, bottom grid.setVerticalSpacing(5) self.para_widgets = { "resource_dir": ParaLine(self, "resource_dir", ParaWidget.str_conv(), grid, 3, True), "metadata_dir": ParaLine(self, "metadata_dir", ParaWidget.str_conv(), grid, 5, False), "description_dir": ParaLine(self, "description_dir", ParaWidget.str_conv(), grid, 7, True), "plugin_dir": ParaLine(self, "plugin_dir", ParaWidget.str_conv(), grid, 9, True), "url_prefix": ParaLine(self, "url_prefix", ParaWidget.str_conv(), grid, 11, False), "strategy": ParaStrategyDrop(self, "strategy", grid, 15), "max_items_in_list": ParaLine(self, "max_items_in_list", ParaWidget.int_conv(), grid, 17, False, width=100), "zero_fill_filename": ParaLine(self, "zero_fill_filename", ParaWidget.int_conv(), grid, 19, False, width=100), "is_saving_pretty_xml": ParaCheck(self, "is_saving_pretty_xml", grid, 21), "is_saving_sitemaps": ParaCheck(self, "is_saving_sitemaps", grid, 22), "has_wellknown_at_root": ParaCheck(self, "has_wellknown_at_root", grid, 23) } self.button_reset = QPushButton(_("Reset"), self) self.button_reset.clicked.connect(self.on_button_reset_clicked) grid.addWidget(self.button_reset, 24, 3) vbl_0.addLayout(grid) vbl_0.addStretch(1) self.setLayout(vbl_0)
def init_ui(self): vbl_0 = QVBoxLayout(self) self.label_title = QLabel(self) font = QFont() font.setPointSize(18) font.setBold(True) self.label_title.setFont(font) self.label_title.setContentsMargins(2, 5, 5, 7) self.label_title.setStyleSheet(Style.h2()) lbl_color = QLabel(" ", self) lbl_color.setStyleSheet(Style.transport_title()) hbox1 = QHBoxLayout() hbox1.addWidget(lbl_color) hbox1.addWidget(self.label_title, 1) self.btn_help = QPushButton(_("Help..."), self) self.btn_help.clicked.connect(self.on_button_help_clicked) hbox1.addWidget(self.btn_help) hbox1.setContentsMargins(0, 0, 0, 5) vbl_0.addLayout(hbox1) grid1 = QGridLayout() grid1.setContentsMargins(0, 0, 0, 0) # left, top, right, bottom grid1.setVerticalSpacing(2) grid1.setHorizontalSpacing(2) self.lbl_metadata_key = SelectableLabel(self) self.lbl_metadata_value = SelectableLabel(self) grid1.addWidget(self.lbl_metadata_key, 2, 1) grid1.addWidget(self.lbl_metadata_value, 2, 2) self.lbl_last_execution_key = SelectableLabel(self) self.lbl_last_execution_value = SelectableLabel(self) grid1.addWidget(self.lbl_last_execution_key, 3, 1) grid1.addWidget(self.lbl_last_execution_value, 3, 2) hbox2 = QHBoxLayout() hbox2.addLayout(grid1) hbox2.addStretch(1) vbl_0.addLayout(hbox2) vbl_0.insertSpacing(2, 25) # # scp group grid2 = QGridLayout() grid2.setContentsMargins(0, 0, 0, 0) # left, top, right, bottom grid2.setVerticalSpacing(5) grid2.setHorizontalSpacing(10) self.grp_scp = QGroupBox(_("Transfer files with Secure Copy Protocol (scp)")) vbox3 = QVBoxLayout() self.para_scp_widgets = { "exp_scp_server": ParaLine(self, "exp_scp_server", ParaWidget.str_conv(), grid2, 3, False), "exp_scp_port": ParaLine(self, "exp_scp_port", ParaWidget.int_conv(), grid2, 5, False, width=100), "exp_scp_user": ParaLine(self, "exp_scp_user", ParaWidget.str_conv(), grid2, 7, False), "exp_scp_document_root": ParaLine(self, "exp_scp_document_root", ParaWidget.str_conv(), grid2, 9, False), } self.lbl_server_path = QLabel(_("server_path_label")) self.edt_server_path = QLabel(self.ctrl.paras.server_path()) self.edt_server_path.setStyleSheet(Style.derived()) self.edt_server_path.setTextInteractionFlags(Qt.TextSelectableByMouse) grid2.addWidget(self.lbl_server_path, 11, 1) grid2.addWidget(self.edt_server_path, 11, 2) self.grp_scp.setLayout(vbox3) vbox3.addLayout(grid2) hbox_scp = QHBoxLayout() hbox_scp.addStretch(1) self.scp_radio_all = QRadioButton(_("Export all resources")) self.scp_radio_all.setChecked(False) self.scp_radio_latest = QRadioButton(_("Export latest changes")) self.scp_radio_latest.setChecked(True) hbox_scp.addWidget(self.scp_radio_all) hbox_scp.addWidget(self.scp_radio_latest) self.scp_button_start = QPushButton(_("Start transfer")) self.scp_button_start.clicked.connect(self.on_scp_button_start_clicked) hbox_scp.addWidget(self.scp_button_start) vbox3.addLayout(hbox_scp) vbl_0.addWidget(self.grp_scp) vbl_0.insertSpacing(4, 15) # # zip group grid3 = QGridLayout() grid3.setContentsMargins(0, 0, 0, 0) # left, top, right, bottom grid3.setVerticalSpacing(5) grid3.setHorizontalSpacing(10) self.grp_zip = QGroupBox(_("Create a .zip file")) vbox4 = QVBoxLayout() self.para_zip_widgets = { "zip_filename": ParaLine(self, "zip_filename", ParaWidget.str_conv(), grid3, 3, browse="SaveFileName") } self.grp_zip.setLayout(vbox4) vbox4.addLayout(grid3) hbox_zip = QHBoxLayout() hbox_zip.addStretch(1) self.zip_radio_all = QRadioButton(_("Zip all resources")) self.zip_radio_all.setChecked(False) self.zip_radio_latest = QRadioButton(_("Zip latest changes")) self.zip_radio_latest.setChecked(True) hbox_zip.addWidget(self.zip_radio_all) hbox_zip.addWidget(self.zip_radio_latest) self.zip_button_start = QPushButton(_("Start creation")) self.zip_button_start.clicked.connect(self.on_zip_button_start_clicked) hbox_zip.addWidget(self.zip_button_start) vbox4.addLayout(hbox_zip) vbl_0.addWidget(self.grp_zip) vbl_0.addStretch(1) self.setLayout(vbl_0)
def init_ui(self): vbl_0 = QVBoxLayout(self) self.label_title = QLabel(self) font = QFont() font.setPointSize(18) font.setBold(True) self.label_title.setFont(font) self.label_title.setContentsMargins(2, 5, 5, 7) self.label_title.setStyleSheet(Style.h2()) lbl_color = QLabel(" ", self) lbl_color.setStyleSheet(Style.import_title()) hbox1 = QHBoxLayout() hbox1.addWidget(lbl_color) hbox1.addWidget(self.label_title, 1) self.btn_help = QPushButton(_("Help..."), self) self.btn_help.clicked.connect(self.on_button_help_clicked) hbox1.addWidget(self.btn_help) hbox1.setContentsMargins(0, 0, 0, 5) vbl_0.addLayout(hbox1) vbl_0.insertSpacing(2, 25) # # scp group grid1 = QGridLayout() grid1.setContentsMargins(0, 0, 0, 0) # left, top, right, bottom grid1.setVerticalSpacing(5) grid1.setHorizontalSpacing(10) self.grp_scp = QGroupBox( _("Import files with Secure Copy Protocol (scp)")) vbox1 = QVBoxLayout() self.para_scp_widgets = { "imp_scp_server": ParaLine(self, "imp_scp_server", ParaWidget.str_conv(), grid1, 3, False), "imp_scp_port": ParaLine(self, "imp_scp_port", ParaWidget.int_conv(), grid1, 5, False, width=100), "imp_scp_user": ParaLine(self, "imp_scp_user", ParaWidget.str_conv(), grid1, 7, False), "imp_scp_remote_path": ParaLine(self, "imp_scp_remote_path", ParaWidget.str_conv(), grid1, 9, False), "imp_scp_local_path": ParaLine(self, "imp_scp_local_path", ParaWidget.str_conv(), grid1, 11, True), } self.grp_scp.setLayout(vbox1) vbox1.addLayout(grid1) hbox_scp = QHBoxLayout() hbox_scp.addStretch(1) self.scp_button_start = QPushButton(_("Start")) self.scp_button_start.clicked.connect(self.on_scp_button_start_clicked) hbox_scp.addWidget(self.scp_button_start) vbox1.addLayout(hbox_scp) vbl_0.addWidget(self.grp_scp) vbl_0.addStretch(1) self.setLayout(vbl_0)
class exampleQMainWindow (QWidget): def __init__(self): super(exampleQMainWindow, self).__init__() # Create QListWidget self.myQListWidget = QListWidget(self) self.myQListWidget.setStyleSheet(""" QListWidget:item:selected:active { background-color:#A6A4FF;} """) self.setMinimumSize(350, 500) self.config = configparser.ConfigParser() self.config.read('prefs.cfg') self.extention = QLineEdit() self.filename = QLineEdit() self.add_type = QPushButton("add type") self.del_type = QPushButton("del type") self.color_button = color_picker(parent=self) self.pattern_icon = Pattern_button(parent=self) self.radio_button_one = QRadioButton('Classic') self.radio_button_two = QRadioButton('Magellan') self.radio_group = QGroupBox('operation mode') self.radio_group.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.pattern_group = QGroupBox('window pattern and text color') self.pattern_group.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.button_group = QButtonGroup() self.button_group.addButton(self.radio_button_one) self.button_group.addButton(self.radio_button_two) self.button_group.setId(self.radio_button_one, 1) self.button_group.setId(self.radio_button_two, 2) self.mainlayout = QVBoxLayout() self.holdgroups_layout = QHBoxLayout() self.radio_button_layout = QVBoxLayout() self.pattern_label_layout = QHBoxLayout() self.add_filetype_layout = QFormLayout() self.add_del_button_layout = QHBoxLayout() # adding self.holdgroups_layout.addWidget(self.radio_group) self.holdgroups_layout.addWidget(self.pattern_group) self.pattern_label_layout.addWidget(self.pattern_icon) self.pattern_label_layout.addStretch(1) self.pattern_label_layout.addWidget(self.color_button) self.pattern_label_layout.addStretch(1) self.pattern_group.setLayout(self.pattern_label_layout) self.radio_button_layout.addWidget(self.radio_button_one) self.radio_button_layout.addWidget(self.radio_button_two) self.radio_group.setLayout(self.radio_button_layout) self.add_filetype_layout.addRow('extention', self.extention) self.add_filetype_layout.addRow('path to icon', self.filename) self.add_del_button_layout.addWidget(self.add_type) self.add_del_button_layout.addWidget(self.del_type) # layouts settings # self.radio_button_layout.setGeometry(QRect(10, 10, 10, 10)) self.add_filetype_layout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) # self.pattern_icon.setPixmap(QPixmap("./images/pattern.png").scaledToWidth(80)) self.mainlayout.setContentsMargins(5, 5, 5, 0) self.mainlayout.setSpacing(7) # reading stored settings for key, value in self.config.items('icons'): myQCustomQWidget = QCustomQWidget() myQCustomQWidget.setTextUp("filetype: " + key.upper()) myQCustomQWidget.setTextDown(value) myQCustomQWidget.setIcon(os.path.dirname(os.path.realpath(__file__)) + value) myQListWidgetItem = QListWidgetItem(self.myQListWidget) myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint()) self.myQListWidget.addItem(myQListWidgetItem) self.myQListWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget) # adding elements to layout self.mainlayout.addLayout(self.holdgroups_layout) self.mainlayout.insertSpacing(10, 10) self.mainlayout.addWidget(self.myQListWidget) self.mainlayout.addLayout(self.add_filetype_layout) self.mainlayout.addLayout(self.add_del_button_layout) self.setLayout(self.mainlayout)
class UiRootWindow: """ Root window UI class """ def __init__(self): # ELEMENTS # ------------------------------ TOP ELEMENTS ------------------------------------- self.logo = QLabel() self.add_new = QToolButton() self.pass_input = QLineEdit() # ------------------------------ MENU PANEL ELEMENTS ------------------------------ self.b1 = MenuButton("Web Sites", ":/web", 30, 16) self.b2 = MenuButton("Credit Cards", ":/credit", 26, 16) self.b3 = MenuButton("Secrets", ":/secret", 26, 16) self.b4 = MenuButton("E-commerce", ":/ecommerce", 27, 16) self.b5 = MenuButton("Web Accounts", ":/webaccount", 30, 16) self.b6 = MenuButton("Emails", ":/email", 27, 16) self.b7 = MenuButton("Forums", ":/forum", 30, 16) self.b8 = MenuButton("Software", ":/software", 30, 16) self.export_dump = QToolButton() self.import_dump = QToolButton() # ------------------------------ TABLE PANEL ELEMENTS ----------------------------- self.search_field = QLineEdit() # WIDGETS # ------------------------------ TOP WIDGETS -------------------------------------- self.bar_top = QWidget() self.bar_menu = QWidget() self.bar_key = QWidget() # ------------------------------ TABLE PANEL WIDGETS ------------------------------ self.table = QTableWidget() # Layouts self.main_layout = QVBoxLayout() self.first_layout = QHBoxLayout() self.second_layout = QHBoxLayout() self.second_layout_menu_bottom_extra = QHBoxLayout() self.second_layout_menu = QVBoxLayout() self.second_layout_keys = QVBoxLayout() self.second_layout_keys_childs = QHBoxLayout() def setup_ui(self, root_window) -> None: """ setup ui """ root_window.setStyleSheet(qwidget_css.root_style) self.init_elements() self.init_widgets() self.init_layouts(root_window) self.table.setGraphicsEffect(self.init_effects(root_window)) @staticmethod def init_effects(root_window: QWidget) -> QGraphicsDropShadowEffect: """ Initialize base effects :return: QGraphicsDropShadowEffect """ # ------------------------------ EFFECTS ------------------------------------------ effect = QGraphicsDropShadowEffect(root_window) effect.setXOffset(0) effect.setYOffset(0) effect.setBlurRadius(10) effect.setColor(QColor("#b4b4b4")) return effect def init_elements(self) -> None: """ Initialize main elements :return: None """ # ------------------------------ TOP ELEMENTS ------------------------------------- # LOGO with monkey face self.logo.setObjectName("logo") self.logo.setFixedSize(200, 50) self.logo.setPixmap(QPixmap(":/logo")) # ADD NEW button self.add_new.setObjectName("add_new") self.add_new.setText("+ add") self.add_new.setFixedHeight(50) self.add_new.setCursor(Qt.PointingHandCursor) # PASSWORD input field self.pass_input.setObjectName("pass_input") self.pass_input.setFixedHeight(50) self.pass_input.setPlaceholderText("secret key") self.pass_input.setEchoMode(QLineEdit.Password) self.pass_input.installEventFilter(self) # ------------------------------ MENU PANEL ELEMENTS ------------------------------ self.export_dump.setMinimumSize(14, 14) self.export_dump.setIcon(QIcon("images/export.svg")) self.export_dump.setCursor(Qt.PointingHandCursor) self.export_dump.setToolTip("Export db to csv") self.export_dump.setStyleSheet(qwidget_css.menu_extra_buttons) self.import_dump.setMinimumSize(14, 14) self.import_dump.setIcon(QIcon("images/import.svg")) self.import_dump.setCursor(Qt.PointingHandCursor) self.import_dump.setToolTip("Import db from csv") self.import_dump.setStyleSheet(qwidget_css.menu_extra_buttons) # ------------------------------ TABLE PANEL ELEMENTS ----------------------------- # SEARCH field self.search_field.setMinimumHeight(46) self.search_field.setMaxLength(50) self.search_field.setPlaceholderText( "Search: [title, name, email, url]") self.search_field.installEventFilter(self) self.search_field.setStyleSheet(qwidget_css.search_field_style) def init_widgets(self) -> None: """ Initialize main widgets :return: None """ # ------------------------------ TOP WIDGETS -------------------------------------- self.bar_top.setObjectName("bar_top") self.bar_top.setFixedHeight(50) # ------------------------------ MENU WIDGETS ------------------------------------- self.bar_menu.setObjectName("bar_menu") self.bar_menu.setFixedWidth(200) # ------------------------------ TABLE PANEL WIDGETS ------------------------------ self.bar_key.setObjectName("bar_key") self.table.setColumnCount(8) self.table.setColumnWidth(0, 160) self.table.setColumnWidth(1, 150) self.table.setColumnWidth(2, 160) self.table.setColumnWidth(3, 150) self.table.setColumnWidth(4, 180) self.table.setColumnWidth(5, 150) self.table.setColumnWidth(6, 150) self.table.setColumnWidth(7, 150) self.table.setHorizontalHeaderItem(0, QTableWidgetItem("TITLE")) self.table.setHorizontalHeaderItem(1, QTableWidgetItem("NAME")) self.table.setHorizontalHeaderItem(2, QTableWidgetItem("EMAIL")) self.table.setHorizontalHeaderItem(3, QTableWidgetItem("PASSWORD")) self.table.setHorizontalHeaderItem(4, QTableWidgetItem("URL")) self.table.setHorizontalHeaderItem(5, QTableWidgetItem("PHONE")) self.table.setHorizontalHeaderItem(6, QTableWidgetItem("CREATED")) self.table.setHorizontalHeaderItem(7, QTableWidgetItem("MODIFIED")) self.table.horizontalHeader().setStretchLastSection(True) self.table.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter) self.table.setShowGrid(False) self.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.table.setSelectionMode(QAbstractItemView.SingleSelection) self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table.installEventFilter(self) def init_layouts(self, root_window) -> None: """ Initialize main layouts :return: None """ self.main_layout.setContentsMargins(0, 0, 0, 0) self.main_layout.setSpacing(0) self.second_layout_keys.setSpacing(0) self.second_layout_keys.setContentsMargins(40, 0, 40, 0) self.second_layout_keys.setAlignment(Qt.AlignTop) self.second_layout_keys_childs.setSpacing(0) self.second_layout_keys_childs.setContentsMargins(0, 0, 0, 4) self.second_layout_keys_childs.setAlignment(Qt.AlignLeft) self.first_layout.setContentsMargins(0, 0, 0, 0) self.first_layout.addWidget(self.logo, alignment=Qt.AlignLeft) self.first_layout.addStretch(1) self.first_layout.addWidget(self.add_new, alignment=Qt.AlignCenter) self.first_layout.addWidget(self.pass_input, alignment=Qt.AlignCenter) self.bar_top.setLayout(self.first_layout) self.second_layout_menu_bottom_extra.setContentsMargins(10, 0, 10, 10) self.second_layout_menu_bottom_extra.addWidget(self.export_dump, alignment=Qt.AlignLeft) self.second_layout_menu_bottom_extra.addSpacing(7) self.second_layout_menu_bottom_extra.addWidget(self.import_dump, alignment=Qt.AlignLeft) self.second_layout_menu_bottom_extra.addStretch(1) self.second_layout_menu.setContentsMargins(0, 0, 0, 0) self.second_layout_menu.setSpacing(0) self.second_layout_menu.addSpacing(20) self.second_layout_menu.addWidget(self.b1, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b5, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b6, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b2, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b4, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b3, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b7, alignment=Qt.AlignCenter) self.second_layout_menu.addWidget(self.b8, alignment=Qt.AlignCenter) self.second_layout_menu.addStretch(1) self.second_layout_menu.addLayout(self.second_layout_menu_bottom_extra) self.bar_menu.setLayout(self.second_layout_menu) self.second_layout_keys.insertSpacing(0, 20) self.second_layout_keys.addWidget(self.search_field, alignment=Qt.AlignBaseline) self.second_layout_keys.insertSpacing(2, 20) self.second_layout_keys.addLayout(self.second_layout_keys_childs) self.second_layout_keys.insertSpacing(4, 7) self.second_layout_keys.addWidget(self.table) self.second_layout_keys.insertSpacing(6, 5) self.bar_key.setLayout(self.second_layout_keys) self.second_layout.setContentsMargins(0, 0, 0, 0) self.second_layout.addWidget(self.bar_menu, alignment=Qt.AlignLeft) self.second_layout.addWidget(self.bar_key) self.main_layout.addWidget(self.bar_top, alignment=Qt.AlignBaseline) self.main_layout.addLayout(self.second_layout) root_window.setLayout(self.main_layout) self.pass_input.setFocus(True)
def initUI(self): self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.receivedTextEdit = QTextEdit() self.receivedTextEdit.setAcceptRichText(False) monospaceFont = QFont("Monospace") monospaceFont.setStyleHint(QFont.Monospace) self.receivedTextEdit.setFont(monospaceFont) playExerciseButton = QPushButton("Play exercise text") playExerciseButton.clicked.connect(self.playExercise) stopButton = QPushButton("Stop playing") stopButton.clicked.connect(self.stopPlaying) validateButton = QPushButton("Check input / Generate next exercise") validateButton.clicked.connect(self.checkInput) self.wpmLineEdit = QLineEdit(self.settings.value("wpm")) self.wpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.wpmLineEdit, "wpm")) wpmLabel = QLabel("WPM") self.ewpmLineEdit = QLineEdit(self.settings.value("effectiveWpm")) self.ewpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.ewpmLineEdit, "effectiveWpm")) ewpmLabel = QLabel("effective WPM") self.freqLineEdit = QLineEdit(self.settings.value("frequency")) self.freqLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.freqLineEdit, "frequency")) freqLabel = QLabel("Frequency (Hz)") self.durationLineEdit = QLineEdit(self.settings.value("duration")) self.durationLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.durationLineEdit, "duration")) durationLabel = QLabel("Duration (min)") self.lessonGrid = QGridLayout() lessonCombo = QComboBox() lessonCombo.setStyleSheet("combobox-popup: 0;") lessonCombo.addItem("1 - K M") for lesson in range(2, len(KOCH_LETTERS)): lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson]) lessonCombo.setCurrentIndex(int(self.settings.value("currentLesson"))-1) lessonCombo.currentIndexChanged.connect(self.newLessonSelected) lessonIdLabel = QLabel("Lesson:") lessonBox = QHBoxLayout() lessonBox.addWidget(lessonIdLabel) lessonBox.addWidget(lessonCombo) lessonBox.addStretch(-1) self.createLessonLetterButtons(self.lessonGrid) mainLayout = QVBoxLayout() inputAndParameters = QHBoxLayout() parameterField = QVBoxLayout() inputAndParameters.addWidget(self.receivedTextEdit, stretch=1) self.receivedTextEdit.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding)) inputAndParameters.addLayout(parameterField, stretch=0) parameterField.addWidget(playExerciseButton) parameterField.addWidget(stopButton) parameterField.addWidget(validateButton) parameterGrid = QGridLayout() parameterGrid.addWidget(self.wpmLineEdit, 0, 0) parameterGrid.addWidget(wpmLabel, 0, 1) parameterGrid.addWidget(self.ewpmLineEdit, 1, 0) parameterGrid.addWidget(ewpmLabel, 1, 1) parameterGrid.addWidget(self.freqLineEdit, 2, 0) parameterGrid.addWidget(freqLabel, 2, 1) parameterGrid.addWidget(self.durationLineEdit, 3, 0) parameterGrid.addWidget(durationLabel, 3, 1) parameterField.addLayout(parameterGrid) parameterField.insertSpacing(-1, 15) parameterField.addLayout(lessonBox) parameterField.insertStretch(-1) mainLayout.addLayout(inputAndParameters) mainLayout.addLayout(self.lessonGrid) self.centralWidget.setLayout(mainLayout) self.setWindowTitle('PyMorsetrainer') self.show()
def initUI(self): self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.receivedTextEdit = QTextEdit() self.receivedTextEdit.setAcceptRichText(False) monospaceFont = QFont("Monospace") monospaceFont.setStyleHint(QFont.Monospace) self.receivedTextEdit.setFont(monospaceFont) playExerciseButton = QPushButton("Play exercise text") playExerciseButton.clicked.connect(self.playExercise) stopButton = QPushButton("Stop playing") stopButton.clicked.connect(self.stopPlaying) validateButton = QPushButton("Check input / Generate next exercise") validateButton.clicked.connect(self.checkInput) self.wpmLineEdit = QLineEdit(self.settings.value("wpm")) self.wpmLineEdit.textChanged.connect( functools.partial(self.saveChangedText, self.wpmLineEdit, "wpm")) wpmLabel = QLabel("WPM") self.ewpmLineEdit = QLineEdit(self.settings.value("effectiveWpm")) self.ewpmLineEdit.textChanged.connect( functools.partial(self.saveChangedText, self.ewpmLineEdit, "effectiveWpm")) ewpmLabel = QLabel("effective WPM") self.freqLineEdit = QLineEdit(self.settings.value("frequency")) self.freqLineEdit.textChanged.connect( functools.partial(self.saveChangedText, self.freqLineEdit, "frequency")) freqLabel = QLabel("Frequency (Hz)") self.durationLineEdit = QLineEdit(self.settings.value("duration")) self.durationLineEdit.textChanged.connect( functools.partial(self.saveChangedText, self.durationLineEdit, "duration")) durationLabel = QLabel("Duration (min)") self.lessonGrid = QGridLayout() lessonCombo = QComboBox() lessonCombo.setStyleSheet("combobox-popup: 0;") lessonCombo.addItem("1 - K M") for lesson in range(2, len(KOCH_LETTERS)): lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson]) lessonCombo.setCurrentIndex( int(self.settings.value("currentLesson")) - 1) lessonCombo.currentIndexChanged.connect(self.newLessonSelected) lessonIdLabel = QLabel("Lesson:") lessonBox = QHBoxLayout() lessonBox.addWidget(lessonIdLabel) lessonBox.addWidget(lessonCombo) lessonBox.addStretch(-1) self.createLessonLetterButtons(self.lessonGrid) mainLayout = QVBoxLayout() inputAndParameters = QHBoxLayout() parameterField = QVBoxLayout() inputAndParameters.addWidget(self.receivedTextEdit, stretch=1) self.receivedTextEdit.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding)) inputAndParameters.addLayout(parameterField, stretch=0) parameterField.addWidget(playExerciseButton) parameterField.addWidget(stopButton) parameterField.addWidget(validateButton) parameterGrid = QGridLayout() parameterGrid.addWidget(self.wpmLineEdit, 0, 0) parameterGrid.addWidget(wpmLabel, 0, 1) parameterGrid.addWidget(self.ewpmLineEdit, 1, 0) parameterGrid.addWidget(ewpmLabel, 1, 1) parameterGrid.addWidget(self.freqLineEdit, 2, 0) parameterGrid.addWidget(freqLabel, 2, 1) parameterGrid.addWidget(self.durationLineEdit, 3, 0) parameterGrid.addWidget(durationLabel, 3, 1) parameterField.addLayout(parameterGrid) parameterField.insertSpacing(-1, 15) parameterField.addLayout(lessonBox) parameterField.insertStretch(-1) mainLayout.addLayout(inputAndParameters) mainLayout.addLayout(self.lessonGrid) self.centralWidget.setLayout(mainLayout) self.setWindowTitle('PyMorsetrainer') self.show()
def init_UI(self): self.setWindowTitle("Insert Dates") self.setWindowModality(Qt.ApplicationModal) self.resize(400, 400) intervalLabel = QLabel("Rotation Interval:") mRotationsRBtn = QRadioButton("Monthly") wRotationsRBtn = QRadioButton("Weekly") dRotationsRBtn = QRadioButton("Daily") cRotationsRBtn = QRadioButton("Custom:") customEntry = QSpinBox() customEntry.setRange(0, 365) customEntry.setFixedWidth(80) intervalBox = QVBoxLayout() intervalBox.addWidget(intervalLabel) intervalBox.addWidget(mRotationsRBtn) intervalBox.addWidget(wRotationsRBtn) intervalBox.addWidget(dRotationsRBtn) intervalBox.addWidget(cRotationsRBtn) intervalBox.addWidget(customEntry) startCalLabel = QLabel("Start Date:") startCal = QCalendarWidget() startCal.setGridVisible(True) startCalBox = QVBoxLayout() startCalBox.addWidget(startCalLabel) startCalBox.addWidget(startCal) endCalLabel = QLabel("End Date:") endCal = QCalendarWidget() endCal.setGridVisible(True) endCalBox = QVBoxLayout() endCalBox.addWidget(endCalLabel) endCalBox.addWidget(endCal) calBox = QHBoxLayout() calBox.addLayout(startCalBox) calBox.addLayout(endCalBox) okButton = QPushButton("OK", self) closeButton = QPushButton("Close", self) btnBox = QHBoxLayout() btnBox.addStretch(1) btnBox.addWidget(okButton) btnBox.addWidget(closeButton) vertBox = QVBoxLayout() vertBox.addLayout(intervalBox) vertBox.insertSpacing(20, 20) vertBox.addLayout(calBox) vertBox.addLayout(btnBox) self.setLayout(vertBox) self.show()