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)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) self.about = About() self.filelist = None self.file_save_path = None # self.setMinimumSize(850, 814) # self.setWindowTitle("PDF- ja TIF-mittaaja") # Tab 1 widgets & connections self.tableView = TableView() self.tableView.filelist_signal.connect(self.update_filelist) self.tableView.file_save_path_signal.connect(self.update_file_save_path) # Fixaa UI-tiedosto! self.horizontalLayout_2.addWidget(self.tableView) self.horizontalLayout_2.addWidget(self.summaryBrowser) self.summaryBrowser.setMaximumWidth(200) self.horizontalLayout_2.setStretch(7, 1) # Signals self.saveXlsButton.clicked.connect(self.save_dialog_xls) self.saveXmlButton.clicked.connect(self.save_dialog_xml) self.rotateButton.clicked.connect(self.rotate) self.chooseFolderButton.clicked.connect(self.open_dialog_folders) self.summaryButton.clicked.connect(self.summary_create) self.clearTableButton.clicked.connect(self.clear_table) self.actionTietoja_ohjelmasta.triggered.connect(self.aboutOpen) self.actionAvaa_tiedosto.setDisabled(True) self.actionAvaa_kansio.triggered.connect(self.open_dialog_folders) self.actionTallenna_XLS.triggered.connect(self.save_dialog_xls) self.actionTallenna_XML.triggered.connect(self.save_dialog_xml) self.actionSulje_ohjelma.triggered.connect(self.closeApp)
def fetch_media(self): files = self.get_url_paths( "http://10.5.5.9:8080/videos/DCIM/100GOPRO/") files = sorted(files, key=lambda item: item["date"], reverse=True) names = [] sizes = [] dates = [] self.links = [] for file in files: names.append(file["name"]) sizes.append(file["size"]) dates.append(file["date"]) self.links.append(file["link"]) data = {"Filename": names, "Size": sizes, "Date": dates} cols = 3 rows = len(names) self.tableWidget = TableView(data, rows, cols) self.tableWidget.clicked.connect(self.item_callback) self.gridLayout_2.addWidget(self.tableWidget, 0, 0, 1, 1) print(data)
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)
class MainWindow(QMainWindow, GUI.Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) self.about = About() self.filelist = None self.file_save_path = None # self.setMinimumSize(850, 814) # self.setWindowTitle("PDF- ja TIF-mittaaja") # Tab 1 widgets & connections self.tableView = TableView() self.tableView.filelist_signal.connect(self.update_filelist) self.tableView.file_save_path_signal.connect(self.update_file_save_path) # Fixaa UI-tiedosto! self.horizontalLayout_2.addWidget(self.tableView) self.horizontalLayout_2.addWidget(self.summaryBrowser) self.summaryBrowser.setMaximumWidth(200) self.horizontalLayout_2.setStretch(7, 1) # Signals self.saveXlsButton.clicked.connect(self.save_dialog_xls) self.saveXmlButton.clicked.connect(self.save_dialog_xml) self.rotateButton.clicked.connect(self.rotate) self.chooseFolderButton.clicked.connect(self.open_dialog_folders) self.summaryButton.clicked.connect(self.summary_create) self.clearTableButton.clicked.connect(self.clear_table) self.actionTietoja_ohjelmasta.triggered.connect(self.aboutOpen) self.actionAvaa_tiedosto.setDisabled(True) self.actionAvaa_kansio.triggered.connect(self.open_dialog_folders) self.actionTallenna_XLS.triggered.connect(self.save_dialog_xls) self.actionTallenna_XML.triggered.connect(self.save_dialog_xml) self.actionSulje_ohjelma.triggered.connect(self.closeApp) def update_filelist(self, filelist): if len(filelist) > 0: self.filelist = filelist model = Model(self, filelist) self.tableView.setModel(model) return self.filelist return False def update_file_save_path(self, file_save_path): if len(file_save_path) > 0: self.file_save_path = file_save_path return self.file_save_path return False # Filedialogs for opening and saving files. def open_dialog_folders(self): dir = None try: dir = "V:/01 - Tilaukset/" except Exception: dir = "." file_path = QFileDialog.getExistingDirectory(self, "Valitse kansio", dir) self.file_save_path = file_path self.processFolderData(unicode(file_path)) def save_dialog_xls(self): if self.filelist == None: return QMessageBox.warning(self, u"Tyhjä taulukko", "Ei tallennettavia tietoja.") file_path = QFileDialog.getSaveFileName( self, u"Tallenna Excel-muotoon", self.file_save_path, "Excel-files(*.xls)" ) return Export(self, self.filelist, file_path[0]).create_xls() def save_dialog_xml(self): if self.filelist == None: return QMessageBox.warning(self, u"Tyhjä taulukko", "Ei tallennettavia tietoja.") return Export(self, self.filelist, self.file_save_path).create_xml() def rotate(self): rotator = Rotation(self.filelist) rotator.rotate(90) def summary_create(self): """ summary_create makes a list out of the contents of the filelist. summary_create displays total amount of files and how many A4/A3 documents (+pages) the filelist has.""" summary_data = [str(row[1]) for row in self.filelist] summary_data_sorted = [v for v, r in itertools.groupby(sorted(summary_data)) if len(list(r)) >= 1] document_data = [row[1:3] for row in self.filedata] pages_a4 = 0 pages_a3 = 0 a4 = [] a3 = [] for i in summary_data_sorted: self.summaryBrowser.append("<b>%s kpl</b> %s" % (summary_data.count(i), str(i))) self.summaryBrowser.append("Tiedostoja yhteens\xe4 = <b>%d</b>" % (len(summary_data))) for i in document_data: page_size = i[0] page_count = i[1] """ page_size (eg. 210x297) is transformed into a tuple holding the width and height of the document. page_size_tuple is put through a conditional to see if the size is A4 or A3 (or something else).""" page_size_tuple = page_size.replace("x", ",") page_size_tuple = tuple(size for size in page_size_tuple.split(",") if size.strip()) if 310 > int(page_size_tuple[0]) > 200 and 310 > int(page_size_tuple[1]) > 200: pages_a4 += int(page_count) a4.append(page_size) elif 440 > int(page_size_tuple[0]) > 270 and 440 > int(page_size_tuple[1]) > 200: pages_a3 += int(page_count) a3.append(page_size) self.summaryBrowser.append("A4-kokoisia: <b>%d(%d)=%d</b>" % (len(a4), (pages_a4 - len(a4)), pages_a4)) self.summaryBrowser.append("A3-kokoisia: <b>%d(%d)=%d</b>" % (len(a3), (pages_a3 - len(a3)), pages_a3)) def processFolderData(self, path): """ processFolderData determines which processing method it's going to use: TIF/PDF/TIF+PDF & Recursive/Not-recursive""" filelist = [] fs = Filesorter([path]) if self.checkBox.isChecked(): if self.fileTypeComboBox.currentIndex() == 0: filelist.extend(fs.sorter("tif")) elif self.fileTypeComboBox.currentIndex() == 1: filelist.extend(fs.sorter("pdf")) else: filelist.extend(fs.sorter()) else: if self.fileTypeComboBox.currentIndex() == 0: for filename in os.listdir(path): if filename.lower().endswith(".tif"): filelist.append(os.path.join(path, filename)) elif self.fileTypeComboBox.currentIndex() == 1: for filename in os.listdir(path): if filename.lower().endswith(".pdf"): filelist.append(os.path.join(path, filename)) else: for filename in os.listdir(path): if filename.lower().endswith(".pdf") | filename.lower().endswith(".tif"): filelist.append(os.path.join(path, filename)) process = Process(filelist) process.processed.connect(self.update_filelist, Qt.QueuedConnection) process.run() def clear_table(self): self.tableView.model.reset() self.summaryBrowser.clearHistory() def aboutOpen(self): self.about.exec_() def closeApp(self): sys.exit(0)
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(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_searchLine = QtWidgets.QLineEdit(self.centralwidget) 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.centralwidget) self.label_3.setGeometry(QtCore.QRect(20, 0, 141, 20)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(370, 0, 161, 21)) font = QtGui.QFont() font.setFamily("MS Shell Dlg 2") self.label_4.setFont(font) self.label_4.setObjectName("label_4") self.message_searchLine = QtWidgets.QLineEdit(self.centralwidget) self.message_searchLine.setGeometry(QtCore.QRect(360, 20, 171, 31)) self.message_searchLine.setText("") self.message_searchLine.setObjectName("message_searchLine") # self.context_view = QtWidgets.QTableView(self.centralwidget) self.context_view = TableView(self.centralwidget) self.context_view.setGeometry(QtCore.QRect(0, 69, 300, 531)) 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.btSearchContext = QtWidgets.QPushButton(self.centralwidget) self.btSearchContext.setGeometry(QtCore.QRect(200, 20, 61, 31)) self.btSearchContext.setObjectName("btSearchContext") self.btSearchMessage = QtWidgets.QPushButton(self.centralwidget) self.btSearchMessage.setGeometry(QtCore.QRect(550, 20, 61, 31)) self.btSearchMessage.setObjectName("btSearchMessage") self.btLoad = QtWidgets.QPushButton(self.centralwidget) self.btLoad.setGeometry(QtCore.QRect(730, 10, 93, 28)) self.btLoad.setObjectName("btLoad") self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(700, 60, 351, 161)) self.groupBox.setObjectName("groupBox") self.sourceText = QtWidgets.QTextEdit(self.groupBox) self.sourceText.setGeometry(QtCore.QRect(10, 20, 301, 87)) self.sourceText.setObjectName("sourceText") self.btChange_source = QtWidgets.QPushButton(self.groupBox) 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(680, 60, 21, 541)) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setFrameShape(QtWidgets.QFrame.VLine) self.line.setObjectName("line") self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget) self.groupBox_2.setGeometry(QtCore.QRect(700, 250, 351, 161)) self.groupBox_2.setFlat(False) self.groupBox_2.setObjectName("groupBox_2") self.ru_transText = QtWidgets.QTextEdit(self.groupBox_2) self.ru_transText.setGeometry(QtCore.QRect(10, 20, 301, 91)) self.ru_transText.setObjectName("ru_transText") self.btChange_rus = QtWidgets.QPushButton(self.groupBox_2) self.btChange_rus.setGeometry(QtCore.QRect(250, 120, 93, 28)) self.btChange_rus.setObjectName("btChange_rus") self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget) self.groupBox_3.setGeometry(QtCore.QRect(699, 430, 351, 161)) self.groupBox_3.setObjectName("groupBox_3") self.en_transText = QtWidgets.QTextEdit(self.groupBox_3) self.en_transText.setGeometry(QtCore.QRect(10, 20, 301, 91)) self.en_transText.setObjectName("en_transText") self.btChange_eng = QtWidgets.QPushButton(self.groupBox_3) 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(840, 10, 93, 28)) self.btSave.setObjectName("btSave") self.addMessage_bt = QtWidgets.QToolButton(self.centralwidget) self.addMessage_bt.setGeometry(QtCore.QRect(650, 80, 27, 22)) self.addMessage_bt.setAutoFillBackground(False) self.addMessage_bt.setStyleSheet("background-color: #e8ecf0;") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addMessage_bt.setIcon(icon) self.addMessage_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.addMessage_bt.setObjectName("addMessage_bt") self.addContext_bt = QtWidgets.QToolButton(self.centralwidget) self.addContext_bt.setGeometry(QtCore.QRect(300, 80, 27, 22)) self.addContext_bt.setAutoFillBackground(False) self.addContext_bt.setStyleSheet("background-color: #e8ecf0;") self.addContext_bt.setIcon(icon) self.addContext_bt.setPopupMode(QtWidgets.QToolButton.DelayedPopup) self.addContext_bt.setObjectName("addContext_bt") self.delContext_bt = QtWidgets.QToolButton(self.centralwidget) self.delContext_bt.setGeometry(QtCore.QRect(300, 110, 27, 22)) self.delContext_bt.setAutoFillBackground(False) self.delContext_bt.setStyleSheet("background-color: #e8ecf0;") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("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.delMessage_bt = QtWidgets.QToolButton(self.centralwidget) self.delMessage_bt.setGeometry(QtCore.QRect(650, 110, 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.showAllContexts_bt = QtWidgets.QToolButton(self.centralwidget) self.showAllContexts_bt.setGeometry(QtCore.QRect(300, 140, 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.showAllMessages_bt = QtWidgets.QToolButton(self.centralwidget) self.showAllMessages_bt.setGeometry(QtCore.QRect(650, 140, 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") 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.label_3.setText( _translate( "MainWindow", "<html><head/><body><p><span style=\" font-size:9pt;\">Поиск в contexts</span></p></body></html>" )) self.label_4.setText( _translate( "MainWindow", "<html><head/><body><p><span style=\" font-size:9pt;\">Поиск в messages</span></p></body></html>" )) self.btSearchContext.setText(_translate("MainWindow", "Поиск")) self.btSearchMessage.setText(_translate("MainWindow", "Поиск")) self.btLoad.setText(_translate("MainWindow", "LOAD")) self.groupBox.setTitle(_translate("MainWindow", "Исходный текст")) self.btChange_source.setText(_translate("MainWindow", "Изменить")) self.groupBox_2.setTitle(_translate("MainWindow", "Русский перевод")) self.btChange_rus.setText(_translate("MainWindow", "Изменить")) self.groupBox_3.setTitle( _translate("MainWindow", "English translation")) self.btChange_eng.setText(_translate("MainWindow", "Изменить")) self.btSave.setText(_translate("MainWindow", "SAVE")) self.addMessage_bt.setText(_translate("MainWindow", "...")) self.addContext_bt.setText(_translate("MainWindow", "...")) self.delContext_bt.setText(_translate("MainWindow", "...")) self.delMessage_bt.setText(_translate("MainWindow", "...")) self.showAllContexts_bt.setText(_translate("MainWindow", "all")) self.showAllMessages_bt.setText(_translate("MainWindow", "all")) 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)