class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1056, 666) MainWindow.setMinimumSize(QtCore.QSize(1056, 666)) MainWindow.setBaseSize(QtCore.QSize(1056, 666)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(232, 236, 240)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(232, 236, 240)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(232, 236, 240)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(232, 236, 240)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) MainWindow.setPalette(palette) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") # self.context_view = QtWidgets.QTableView(self.centralwidget) self.context_view = TableView(self.centralwidget) self.context_view.setGeometry(QtCore.QRect(0, 69, 300, 541)) self.context_view.setMinimumSize(QtCore.QSize(300, 50)) self.context_view.setBaseSize(QtCore.QSize(300, 500)) self.context_view.setFrameShape(QtWidgets.QFrame.StyledPanel) self.context_view.setFrameShadow(QtWidgets.QFrame.Raised) self.context_view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.context_view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.context_view.setShowGrid(False) self.context_view.setObjectName("context_view") self.context_view.horizontalHeader().setCascadingSectionResizes(True) self.context_view.horizontalHeader().setDefaultSectionSize(220) self.context_view.horizontalHeader().setHighlightSections(False) self.context_view.horizontalHeader().setMinimumSectionSize(60) self.context_view.horizontalHeader().setStretchLastSection(True) self.context_view.verticalHeader().setVisible(False) # self.message_view = QtWidgets.QTableView(self.centralwidget) self.message_view = TableView(self.centralwidget) self.message_view.setGeometry(QtCore.QRect(350, 70, 300, 531)) self.message_view.setMinimumSize(QtCore.QSize(250, 50)) self.message_view.setBaseSize(QtCore.QSize(300, 500)) self.message_view.setLayoutDirection(QtCore.Qt.LeftToRight) self.message_view.setFrameShape(QtWidgets.QFrame.StyledPanel) self.message_view.setFrameShadow(QtWidgets.QFrame.Raised) self.message_view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.message_view.setObjectName("message_view") self.message_view.horizontalHeader().setDefaultSectionSize(301) self.message_view.horizontalHeader().setHighlightSections(False) self.message_view.horizontalHeader().setStretchLastSection(True) self.message_view.verticalHeader().setVisible(False) self.btLoad = QtWidgets.QPushButton(self.centralwidget) self.btLoad.setGeometry(QtCore.QRect(800, 20, 93, 28)) self.btLoad.setObjectName("btLoad") self.source_editBox = QtWidgets.QGroupBox(self.centralwidget) self.source_editBox.setGeometry(QtCore.QRect(700, 60, 351, 161)) self.source_editBox.setObjectName("source_editBox") self.sourceText = QtWidgets.QTextEdit(self.source_editBox) self.sourceText.setGeometry(QtCore.QRect(10, 20, 301, 87)) self.sourceText.setObjectName("sourceText") self.btChange_source = QtWidgets.QPushButton(self.source_editBox) self.btChange_source.setGeometry(QtCore.QRect(250, 120, 93, 28)) self.btChange_source.setObjectName("btChange_source") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(682, 60, 21, 541)) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setFrameShape(QtWidgets.QFrame.VLine) self.line.setObjectName("line") self.ru_transBox = QtWidgets.QGroupBox(self.centralwidget) self.ru_transBox.setGeometry(QtCore.QRect(700, 250, 351, 161)) self.ru_transBox.setFlat(False) self.ru_transBox.setObjectName("ru_transBox") self.ru_transText = QtWidgets.QTextEdit(self.ru_transBox) self.ru_transText.setGeometry(QtCore.QRect(10, 20, 301, 91)) self.ru_transText.setObjectName("ru_transText") self.btChange_rus = QtWidgets.QPushButton(self.ru_transBox) self.btChange_rus.setGeometry(QtCore.QRect(250, 120, 93, 28)) self.btChange_rus.setObjectName("btChange_rus") self.en_transBox = QtWidgets.QGroupBox(self.centralwidget) self.en_transBox.setGeometry(QtCore.QRect(699, 430, 351, 161)) self.en_transBox.setObjectName("en_transBox") self.en_transText = QtWidgets.QTextEdit(self.en_transBox) self.en_transText.setGeometry(QtCore.QRect(10, 20, 301, 91)) self.en_transText.setObjectName("en_transText") self.btChange_eng = QtWidgets.QPushButton(self.en_transBox) self.btChange_eng.setGeometry(QtCore.QRect(250, 120, 93, 28)) self.btChange_eng.setObjectName("btChange_eng") self.line_2 = QtWidgets.QFrame(self.centralwidget) self.line_2.setGeometry(QtCore.QRect(-10, 50, 701, 20)) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.btSave = QtWidgets.QPushButton(self.centralwidget) self.btSave.setGeometry(QtCore.QRect(920, 20, 93, 28)) self.btSave.setObjectName("btSave") self.context_viewTools = QtWidgets.QFrame(self.centralwidget) self.context_viewTools.setGeometry(QtCore.QRect(300, 70, 40, 170)) self.context_viewTools.setFrameShape(QtWidgets.QFrame.StyledPanel) self.context_viewTools.setFrameShadow(QtWidgets.QFrame.Raised) self.context_viewTools.setObjectName("context_viewTools") self.addContext_bt = QtWidgets.QToolButton(self.context_viewTools) self.addContext_bt.setGeometry(QtCore.QRect(0, 10, 27, 22)) self.addContext_bt.setAutoFillBackground(False) self.addContext_bt.setStyleSheet("background-color: #e8ecf0;") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("D:/ucheba/python/ts_viewer/plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addContext_bt.setIcon(icon) self.addContext_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.addContext_bt.setObjectName("addContext_bt") self.delContext_bt = QtWidgets.QToolButton(self.context_viewTools) self.delContext_bt.setGeometry(QtCore.QRect(0, 40, 27, 22)) self.delContext_bt.setAutoFillBackground(False) self.delContext_bt.setStyleSheet("background-color: #e8ecf0;") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("D:/ucheba/python/ts_viewer/minus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.delContext_bt.setIcon(icon1) self.delContext_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.delContext_bt.setObjectName("delContext_bt") self.showAllContexts_bt = QtWidgets.QToolButton(self.context_viewTools) self.showAllContexts_bt.setGeometry(QtCore.QRect(0, 70, 27, 22)) self.showAllContexts_bt.setAutoFillBackground(False) self.showAllContexts_bt.setStyleSheet("background-color: #e8ecf0;") self.showAllContexts_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.showAllContexts_bt.setObjectName("showAllContexts_bt") self.cleanContextView_bt = QtWidgets.QToolButton(self.context_viewTools) self.cleanContextView_bt.setGeometry(QtCore.QRect(0, 100, 27, 22)) self.cleanContextView_bt.setAutoFillBackground(False) self.cleanContextView_bt.setStyleSheet("background-color: #e8ecf0;") icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("D:/ucheba/python/ts_viewer/clean.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.cleanContextView_bt.setIcon(icon2) self.cleanContextView_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.cleanContextView_bt.setObjectName("cleanContextView_bt") self.message_viewTools = QtWidgets.QFrame(self.centralwidget) self.message_viewTools.setGeometry(QtCore.QRect(650, 69, 41, 151)) self.message_viewTools.setFrameShape(QtWidgets.QFrame.StyledPanel) self.message_viewTools.setFrameShadow(QtWidgets.QFrame.Raised) self.message_viewTools.setObjectName("message_viewTools") self.addMessage_bt = QtWidgets.QToolButton(self.message_viewTools) self.addMessage_bt.setGeometry(QtCore.QRect(0, 10, 27, 22)) self.addMessage_bt.setAutoFillBackground(False) self.addMessage_bt.setStyleSheet("background-color: #e8ecf0;") self.addMessage_bt.setIcon(icon) self.addMessage_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.addMessage_bt.setObjectName("addMessage_bt") self.delMessage_bt = QtWidgets.QToolButton(self.message_viewTools) self.delMessage_bt.setGeometry(QtCore.QRect(0, 40, 27, 22)) self.delMessage_bt.setAutoFillBackground(False) self.delMessage_bt.setStyleSheet("background-color: #e8ecf0;") self.delMessage_bt.setIcon(icon1) self.delMessage_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.delMessage_bt.setObjectName("delMessage_bt") self.showAllMessages_bt = QtWidgets.QToolButton(self.message_viewTools) self.showAllMessages_bt.setGeometry(QtCore.QRect(0, 70, 27, 22)) self.showAllMessages_bt.setAutoFillBackground(False) self.showAllMessages_bt.setStyleSheet("background-color: #e8ecf0;") self.showAllMessages_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.showAllMessages_bt.setObjectName("showAllMessages_bt") self.cleanMessageView_bt = QtWidgets.QToolButton(self.message_viewTools) self.cleanMessageView_bt.setGeometry(QtCore.QRect(0, 100, 27, 22)) self.cleanMessageView_bt.setAutoFillBackground(False) self.cleanMessageView_bt.setStyleSheet("background-color: #e8ecf0;") self.cleanMessageView_bt.setIcon(icon2) self.cleanMessageView_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.cleanMessageView_bt.setObjectName("cleanMessageView_bt") self.search_context = QtWidgets.QFrame(self.centralwidget) self.search_context.setGeometry(QtCore.QRect(10, 0, 281, 61)) self.search_context.setFrameShape(QtWidgets.QFrame.StyledPanel) self.search_context.setFrameShadow(QtWidgets.QFrame.Raised) self.search_context.setObjectName("search_context") self.context_searchLine = QtWidgets.QLineEdit(self.search_context) self.context_searchLine.setGeometry(QtCore.QRect(10, 20, 171, 31)) self.context_searchLine.setText("") self.context_searchLine.setObjectName("context_searchLine") self.label_3 = QtWidgets.QLabel(self.search_context) self.label_3.setGeometry(QtCore.QRect(20, 0, 141, 20)) self.label_3.setObjectName("label_3") self.btSearchContext = QtWidgets.QPushButton(self.search_context) self.btSearchContext.setGeometry(QtCore.QRect(200, 20, 61, 31)) self.btSearchContext.setObjectName("btSearchContext") self.search_message = QtWidgets.QFrame(self.centralwidget) self.search_message.setGeometry(QtCore.QRect(340, -1, 431, 51)) self.search_message.setFrameShape(QtWidgets.QFrame.StyledPanel) self.search_message.setFrameShadow(QtWidgets.QFrame.Raised) self.search_message.setObjectName("search_message") self.message_searchLine = QtWidgets.QLineEdit(self.search_message) self.message_searchLine.setGeometry(QtCore.QRect(10, 20, 171, 31)) self.message_searchLine.setText("") self.message_searchLine.setObjectName("message_searchLine") self.label_4 = QtWidgets.QLabel(self.search_message) self.label_4.setGeometry(QtCore.QRect(20, 0, 161, 21)) font = QtGui.QFont() font.setFamily("MS Shell Dlg 2") self.label_4.setFont(font) self.label_4.setObjectName("label_4") self.btSearchMessage = QtWidgets.QPushButton(self.search_message) self.btSearchMessage.setGeometry(QtCore.QRect(200, 20, 61, 31)) self.btSearchMessage.setObjectName("btSearchMessage") self.search_in_currContext_chB = QtWidgets.QCheckBox(self.search_message) self.search_in_currContext_chB.setGeometry(QtCore.QRect(270, 30, 151, 20)) self.search_in_currContext_chB.setObjectName("search_in_currContext_chB") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1056, 26)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.btLoad.setText(_translate("MainWindow", "LOAD")) self.source_editBox.setTitle(_translate("MainWindow", "Исходный текст")) self.btChange_source.setText(_translate("MainWindow", "Изменить")) self.ru_transBox.setTitle(_translate("MainWindow", "Русский перевод")) self.btChange_rus.setText(_translate("MainWindow", "Изменить")) self.en_transBox.setTitle(_translate("MainWindow", "English translation")) self.btChange_eng.setText(_translate("MainWindow", "Изменить")) self.btSave.setText(_translate("MainWindow", "SAVE")) self.addContext_bt.setText(_translate("MainWindow", "...")) self.delContext_bt.setText(_translate("MainWindow", "...")) self.showAllContexts_bt.setText(_translate("MainWindow", "all")) self.cleanContextView_bt.setText(_translate("MainWindow", "...")) self.addMessage_bt.setText(_translate("MainWindow", "...")) self.delMessage_bt.setText(_translate("MainWindow", "...")) self.showAllMessages_bt.setText(_translate("MainWindow", "all")) self.cleanMessageView_bt.setText(_translate("MainWindow", "...")) self.label_3.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:9pt;\">Поиск в contexts</span></p></body></html>")) self.btSearchContext.setText(_translate("MainWindow", "Поиск")) self.label_4.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:9pt;\">Поиск в messages</span></p></body></html>")) self.btSearchMessage.setText(_translate("MainWindow", "Поиск")) self.search_in_currContext_chB.setText(_translate("MainWindow", "в текущем контексте")) self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
class UsersWidget(QtWidgets.QDialog): signal_close = QtCore.pyqtSignal() def btn_add_user_clicked(self): user_widget = AddUserWidget('Добавить пользователя') user_widget.signal_save_user.connect(self.slot_add_user) user_widget.exec() def slot_add_user(self): self.table_users.model().select() def btn_remove_user_clicked(self): selected_cells = self.table_users.selectedIndexes() if len(selected_cells) == 0: QtWidgets.QMessageBox.information(self, 'Пользователи', 'Выберите пользователя для удаления') return selected_cell = selected_cells[0] self.table_users.model().removeRow(selected_cell.row()) self.table_users.model().submitAll() def edit_user(self, selected_cell): model = self.table_users.model() name = model.data(model.createIndex(selected_cell.row(), 0)) image_data = model.data(model.createIndex(selected_cell.row(), 1)) image = None if image_data: image = QtGui.QPixmap() image.loadFromData(image_data) user_id = model.data(model.createIndex(selected_cell.row(), 2)) user_widget = AddUserWidget('Редактировать пользователя', user_id=user_id, name=name, image=image) user_widget.signal_save_user.connect(self.slot_add_user) user_widget.exec() def slot_user_edited(self): self.table_users.model().select() def btn_edit_user_clicked(self): selected_cells = self.table_users.selectedIndexes() if len(selected_cells) == 0: QtWidgets.QMessageBox.information(self, 'Пользователи', 'Выберите пользователя для редактирования') return selected_cell = selected_cells[0] self.edit_user(selected_cell) def table_users_double_clicked(self, index): self.edit_user(index) def closeEvent(self, event): self.signal_close.emit() super().closeEvent(event) def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle('Пользователи') self.setWindowIcon(QtGui.QIcon('images/logo_era.png')) self.setWindowFlags(self.windowFlags() & (~QtCore.Qt.WindowContextHelpButtonHint)) lbl_users = QtWidgets.QLabel('Пользователи:') btn_add_user = QtWidgets.QPushButton('Добавить') btn_remove_user = QtWidgets.QPushButton('Удалить') btn_edit_user = QtWidgets.QPushButton('Редактировать') btn_add_user.clicked.connect(self.btn_add_user_clicked) btn_remove_user.clicked.connect(self.btn_remove_user_clicked) btn_edit_user.clicked.connect(self.btn_edit_user_clicked) model_users = QtSql.QSqlTableModel() model_users.setTable('User') model_users.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit) model_users.setHeaderData(0, QtCore.Qt.Horizontal, "Имя") model_users.setSort(0, QtCore.Qt.AscendingOrder) model_users.select() self.table_users = TableView() self.table_users.setModel(model_users) self.table_users.setSelectionMode(QtWidgets.QTableView.SingleSelection) self.table_users.setSelectionBehavior(QtWidgets.QTableView.SelectRows) self.table_users.setEditTriggers(QtWidgets.QTableView.NoEditTriggers) self.table_users.setHorizontalScrollMode(QtWidgets.QTableView.ScrollPerPixel) self.table_users.setVerticalScrollMode(QtWidgets.QTableView.ScrollPerPixel) self.table_users.verticalHeader().setHidden(True) self.table_users.horizontalHeader().setStretchLastSection(True) self.table_users.setColumnHidden(1, True) self.table_users.setColumnHidden(2, True) self.table_users.doubleClicked.connect(self.table_users_double_clicked) layout_buttons = QtWidgets.QHBoxLayout() layout_buttons.addWidget(lbl_users) layout_buttons.addWidget(btn_add_user) layout_buttons.addWidget(btn_remove_user) layout_buttons.addWidget(btn_edit_user) layout_main = QtWidgets.QVBoxLayout() layout_main.addLayout(layout_buttons) layout_main.addWidget(self.table_users) self.setLayout(layout_main)