def __init__(self, crossword_index, grid_data, parent=None): super(Form, self).__init__(parent) self.setWindowTitle('{} {} {}'.format( app_title, bangla.convert_english_digit_to_bangla_digit(crossword_index), date.today().strftime("%A, %d %B, %Y"))) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) tableModel = CrosswordGridModel(crossword_index, grid_data, self) tableView = QTableView(self) tableView.horizontalHeader().hide() tableView.verticalHeader().hide() tableView.setModel(tableModel) for i in range(grid_row_count): tableView.setRowHeight(i, grid_cell_size) for i in range(grid_column_count): tableView.setColumnWidth(i, grid_cell_size) generateIconFiles(icons_folder, tableView.columnWidth(0), tableView.rowHeight(0)) right_label = QLabel(self) right_pixmap = QPixmap('right_clues.png') right_label.setPixmap(right_pixmap) down_label = QLabel(self) down_pixmap = QPixmap('down_clues.png') down_label.setPixmap(down_pixmap) saveButton = QPushButton('Save progress', self) loadButton = QPushButton('Load progress', self) clearButton = QPushButton('Clear progress', self) saveButton.clicked.connect(tableModel.save_solution) loadButton.clicked.connect(tableModel.load_solution) clearButton.clicked.connect(tableModel.clear_solution) bbox = QDialogButtonBox(self) bbox.addButton(saveButton, QDialogButtonBox.AcceptRole) bbox.addButton(loadButton, QDialogButtonBox.AcceptRole) bbox.addButton(clearButton, QDialogButtonBox.AcceptRole) layout = QGridLayout(self) layout.addWidget(tableView, 0, 0) layout.addWidget(right_label, 0, 1, Qt.AlignLeft | Qt.AlignTop) layout.addWidget(down_label, 1, 0, Qt.AlignLeft | Qt.AlignTop) layout.addWidget(bbox, 1, 1, Qt.AlignHCenter | Qt.AlignBottom) self.setLayout(layout) windowWidth = tableView.columnWidth( 0 ) * grid_column_count + grid_column_count - 1 + right_clues_right - right_clues_left + layout.horizontalSpacing( ) + 27 windowHeight = tableView.rowHeight( 0 ) * grid_row_count + grid_row_count - 1 + down_clues_bottom - down_clues_top + layout.verticalSpacing( ) + 10 self.setFixedSize(QSize(windowWidth, windowHeight))
class DebugBreakpointsWidget(QWidget, DockContextHandler): def __init__(self, parent, name, data): if not type(data) == binaryninja.binaryview.BinaryView: raise Exception('expected widget data to be a BinaryView') self.bv = data QWidget.__init__(self, parent) DockContextHandler.__init__(self, self, name) self.actionHandler = UIActionHandler() self.actionHandler.setupActionHandler(self) self.table = QTableView(self) self.model = DebugBreakpointsListModel(self.table, data) self.table.setModel(self.model) self.item_delegate = DebugBreakpointsItemDelegate(self) self.table.setItemDelegate(self.item_delegate) # self.table.setSortingEnabled(True) self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) self.table.setSelectionMode(QAbstractItemView.ExtendedSelection) self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) self.table.verticalHeader().setVisible(False) self.table.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.resizeColumnsToContents() self.table.resizeRowsToContents() for i in range(len(self.model.columns)): self.table.setColumnWidth(i, self.item_delegate.sizeHint(self.table.viewOptions(), self.model.index(-1, i, QModelIndex())).width()) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(self.table) self.setLayout(layout) def notifyOffsetChanged(self, offset): pass def notifyBreakpointsChanged(self, new_rows): self.model.update_rows(new_rows) def contextMenuEvent(self, event): self.m_contextMenuManager.show(self.m_menu, self.actionHandler) def shouldBeVisible(self, view_frame): if view_frame is None: return False else: return True
class DebugThreadsWidget(QWidget, DockContextHandler): def __init__(self, parent, name, data): if not type(data) == BinaryView: raise Exception('expected widget data to be a BinaryView') self.bv = data QWidget.__init__(self, parent) DockContextHandler.__init__(self, self, name) self.actionHandler = UIActionHandler() self.actionHandler.setupActionHandler(self) self.table = QTableView(self) self.model = DebugThreadsListModel(self.table) self.table.setModel(self.model) self.table.clicked.connect(self.threadRowClicked) self.item_delegate = DebugThreadsItemDelegate(self) self.table.setItemDelegate(self.item_delegate) # self.table.setSortingEnabled(True) self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) self.table.setSelectionMode(QAbstractItemView.ExtendedSelection) self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) self.table.verticalHeader().setVisible(False) self.table.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.resizeColumnsToContents() self.table.resizeRowsToContents() for i in range(len(self.model.columns)): self.table.setColumnWidth(i, self.item_delegate.sizeHint(self.table.viewOptions(), self.model.index(-1, i, QModelIndex())).width()) self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(self.table) self.setLayout(layout) def notifyOffsetChanged(self, offset): pass # called from QTableView's clicked signal # index: QModelIndex def threadRowClicked(self, index): index = self.model.createIndex(index.row(), 0) tid_str = self.model.data(index, Qt.DisplayRole) #print('clicked to change to thread %s' % tid_str) stateObj = binjaplug.get_state(self.bv) if stateObj.connected and not stateObj.running: tid = int(tid_str, 16) stateObj.threads.current = tid stateObj.ui.context_display() stateObj.ui.on_step() else: print('cannot set thread in current state') # called from plugin's context_display() function def notifyThreadsChanged(self, new_threads): idx_selected = self.model.update_rows(new_threads) if idx_selected: self.table.setCurrentIndex(idx_selected) def contextMenuEvent(self, event): self.m_contextMenuManager.show(self.m_menu, self.actionHandler) def shouldBeVisible(self, view_frame): if view_frame is None: return False else: return True
class Main(QWidget): def __init__(self): super().__init__() self.user_entry = QLineEdit("user5301") # self.user_entry.setStyleSheet("font: corbel; font-size: 12px;") self.pass_entry = QLineEdit("e", self) self.odbc = "" self.bars = "" self.table_query = "" self.pass_entry.setEchoMode(QLineEdit.PasswordEchoOnEdit) self.ru_entry = QLineEdit("328845", self) # self.ru_entry.setStyleSheet("font: corbel; font-size: 12px;") self.cur_entry = QLineEdit("840") # self.cur_entry.setStyleSheet("font: corbel; font-size: 12px;") self.balance_entry = QLineEdit("213000001") # self.balance_entry.setStyleSheet("font: corbel; font-size: 12px;") self.ok_button = QPushButton("Запустить") self.ok_button.setStyleSheet( "font: corbel; font-size: 12px; color: rgb(0, 0, 255)") # self.ok_button.setStyleSheet("color: rgb(160, 70, 70)") self.error_label = QLabel("Ошибки будут тут") self.error_label.setStyleSheet("color: rgb(255, 0, 0)") self.start_button1 = QPushButton("Старт") self.stop_button1 = QPushButton("Стоп") self.start_button1.setEnabled(True) self.stop_button1.setEnabled(False) self.start_button1.setStyleSheet("background-color: rgb(81,142,144)") self.interval_l = QLabel("Интервал") # self.interval_l.setStyleSheet("font: corbel; font-size: 12px; color: rgb(0, 0, 255)") self.interval_e = QLineEdit() self.timer_id = 0 self.table = QTableView() # Create model self.sqm = QSqlQueryModel(parent=self.table) self.init_ui() def on_start(self): password = self.pass_entry.text() if password == "e": self.print_and_label("Вы не ввели пароль!") else: self.timer_id = self.startTimer(int(self.interval_e.text())) self.start_button1.setEnabled(False) self.stop_button1.setEnabled(True) def on_stop(self): print("Таймер остановлен.", self.timer_id) if self.timer_id: self.killTimer(self.timer_id) self.timer_id = 0 self.start_button1.setEnabled(True) self.stop_button1.setEnabled(False) def print_and_label(self, text): print(text) self.error_label.setText(text) def run(self): ## print(getpass.getuser(), self.user_entry.text()) e = WorkWithOCI( "XE", self.user_entry.text(), keyring.get_password(getpass.getuser(), self.user_entry.text())) #print("Name of database:", e.name) # print("Host :", e.host) conn = e.open_db() if conn: self.error_label.setText("Ошибок уже/пока нет") query = QSqlQuery() query2 = QSqlQuery() # Доступность if query.exec_(self.bars): #print("Q1 done!") query.finish() # Create model self.sqm = QSqlQueryModel(parent=self.table) # Сам запрос self.sqm.setQuery( self.table_query.format(self.ru_entry.text().strip(), self.cur_entry.text().strip(), self.balance_entry.text().strip())) if query2.exec_( self.table_query.format( self.ru_entry.text().strip(), self.cur_entry.text().strip(), int(self.balance_entry.text().strip()))): #print("Q2 done!") self.sqm.setQuery(query2) else: self.print_and_label("Ошибка 2-го запроса") print( "2-й запрос (", self.table_query.format( self.ru_entry.text().strip(), self.cur_entry.text().strip(), int(self.balance_entry.text().strip())), ") :", query.lastError().text()) # Задаем заголовки для столбцов модели self.sqm.setHeaderData(0, Qt.Horizontal, "Счет") self.sqm.setHeaderData(1, Qt.Horizontal, "РУ") self.sqm.setHeaderData(2, Qt.Horizontal, "Валюта") self.sqm.setHeaderData(3, Qt.Horizontal, "Остаток") # self.print_and_label(sqm.lastError().text()) # Задаем для таблицы только что созданную модель self.table.setModel(self.sqm) # Not)Скрываем первый столбец, в котором выводится идентификатор # self.table.hideColumn(0) self.table.setColumnWidth(0, 150) self.table.setColumnWidth(1, 60) self.table.setColumnWidth(2, 80) self.table.setColumnWidth(3, 150) # print("sqm.rowCount()", self.sqm.rowCount()) if self.sqm.rowCount() > 0: frequency = 2500 duration = 2000 winsound.Beep(frequency, duration) conn.close() #conn.removeDatabase('qt_sql_default_connection') else: self.print_and_label("Ошибка первого запроса (", self.bars, ") :", query.lastError().text()) else: self.print_and_label("Ошибка открытия базы данных") def timerEvent(self, event): # self.error_label.setText("Сработал таймер" + str(event.timerId())) print("Сработал таймер", str(event.timerId())) self.run() def init_ui(self): file_name = 'ini_balance' with open(file_name) as f: lines = f.readlines() try: self.interval_e.setText(lines[0]) except: self.error_label.setText( ' Возможно в первой строке файла ini_balance нет времени таймера!' ) try: self.bars = lines[1] except: self.error_label.setText( ' Возможно во второй строке файла ini_balance нет запроса!' ) try: self.table_query = lines[2] except: self.error_label.setText( ' Возможно в третьей строке файла ini_balance нет запроса!' ) label = QLabel(self) label.setAlignment(Qt.AlignRight) label.resize(30, 30) image = QPixmap("b.jfif", format="JPG").scaled(label.width(), label.height()) #image = QPixmap("mon.png", format="PNG") label.setPixmap(image) self.group = QGroupBox("Таймер остатка") self.group.setStyleSheet("font: corbel; font-size: 14px;") v_group = QVBoxLayout() # Контейнер для группы v_group.addWidget(self.start_button1) v_group.addWidget(self.stop_button1) v_group.addWidget(self.interval_l) v_group.addWidget(self.interval_e) self.group.setLayout(v_group) form = QFormLayout() form.addRow("", label) form.addRow("По&льзователь", self.user_entry) form.addRow("&Пароль", self.pass_entry) form.addRow("&МФО области", self.ru_entry) form.addRow("&Валюта", self.cur_entry) form.addRow("&Необходимый остаток", self.balance_entry) form.addRow("", self.ok_button) form.addRow("", self.group) form.addRow("&Результат", self.table) form.addRow("&Ошибки", self.error_label) self.setLayout(form) # k10 - work with password # is_right in - hash, return - T/F; set_p in - pass return - hash hash_pass = hashlib.md5(self.pass_entry.text().encode('utf-8')) # print("hash", hash_pass) # keyring.set_password(getpass.getuser(), self.user_entry.text(), self.pass_entry.text()) self.pass_entry.editingFinished.connect( lambda: k10.keyring_pass(getpass.getuser(), self.user_entry.text( ), self.pass_entry, hash_pass, self.ru_entry)) self.ok_button.clicked.connect(lambda: self.run()) self.start_button1.clicked.connect(self.on_start) self.stop_button1.clicked.connect(self.on_stop) self.setGeometry(300, 100, 650, 550) self.setWindowTitle('Ждем деньги') self.show()
class MainWindow(QMainWindow): def __init__(self,*args,**kwargs): super(MainWindow,self).__init__(*args,**kwargs) self.ventanaHelp = HelpContentWindow() self.ventana = AddProductWindow(self) self.menuBar = QMenuBar(self) self.setMenuBar(self.menuBar) help_menu = self.menuBar.addMenu('&Ayuda') help_content = QAction('&Contenido',self) help_acerca = QAction('&Acerca de',self) help_menu.addAction(help_content) help_menu.addAction(help_acerca) help_content.triggered.connect(self.help_content_triggered) focus_in_signal = Signal() self.majorLayout = QHBoxLayout() self.layout = QVBoxLayout() self.table = QTableView() self.marco = QFrame() self.marco.setFrameStyle(QFrame.Box) self.marco.setLayout(self.layout) self.inputCommands = LineEdit() self.inputCommands.setText('Ingrese un comando') self.inputCommands.focus_in_signal.connect(self.focus_in_command) self.layout.addWidget(self.inputCommands) self.inputCommands.returnPressed.connect(self.command_agrega_producto) self.inputCommands.hide() self.input = QLineEdit() self.layout.addWidget(self.table) self.layout.addWidget(self.input) self.majorLayout.addWidget(self.marco) self.total = QLabel() self.total.setText('Total: 0.00') self.total.setStyleSheet("{padding:0 50; margin:0 100;}") self.majorLayout.addWidget(self.total) widget = QWidget() widget.setLayout(self.majorLayout) self.datos =[ ['ABCZ-1234', 'Paño esponja', 130.50], ['XYZC-2345', 'Escoba', 140.30], ] self.datosAnexos = [ ['ABCZ-1234', 'Paño esponja', 130.50], ['XYZC-2345', 'Escoba', 140.30], ['WXYZ-1234', 'Limpiador de pisos', 150.00], ['ABCD-1234', 'Bote de basura grande', 1000.00] ] self.model = TableModel(self.datos, ['SKU', 'Artículo', 'Precio']) self.table.setModel(self.model) self.table.setColumnWidth(1,315) self.setCentralWidget(widget) self.input.returnPressed.connect(self.add_datos) self.calculate_total() def help_content_triggered(self): self.ventanaHelp.display_help() def add_datos(self): texto = self.input.text() valor = self.method_in(self.datosAnexos, texto) if(valor is None): self.marco.setStyleSheet("QFrame{border: 1px solid red;}") self.input.setStyleSheet("border: 1px solid red;") self.inputCommands.setText('Ingrese un comando') self.inputCommands.show() else: self.marco.setStyleSheet("QFrame{border: 1px solid black;}") self.input.setStyleSheet("border: 1px solid black;") self.datos.append(valor) self.table.model().layoutChanged.emit() self.calculate_total() self.inputCommands.hide() def calculate_total(self): agregado = 0.0 for dato in self.datos: agregado += dato[2] self.total.setText('Total: ' + '{:.2f}'.format(agregado)) def method_in(self, data, text): for element in data: if element[0].casefold() == text.casefold(): return element return None def focus_in_command(self): self.inputCommands.setText('') def command_agrega_producto(self): valor = self.elige_comando(1) print(valor) if(valor == self.inputCommands.text()): self.ventana.display_info() else: print('Comando incorrecto') def comando_agregar(self): return 'A' def elige_comando(self, argument): return { 1: lambda: self.comando_agregar(), }.get(argument, lambda: 'Opción inválida')()
class MyWindow(QWidget): def __init__(self, *args): super().__init__() self.setFixedSize(930, 631) self.setLocale(QLocale(QLocale.English, QLocale.UnitedStates)) self.setWindowTitle( QCoreApplication.translate("MainWindow", "PyInspect")) self.central_widget = QWidget(self) self.comboBox = QComboBox(self.central_widget) self.comboBox.setGeometry(QRect(10, 10, 451, 22)) self.comboBox.setMouseTracking(False) self.comboBox.setMaxVisibleItems(5) self.comboBox.setObjectName("comboBox") for _backend in backend.registry.backends.keys(): self.comboBox.addItem(_backend) self.tree_view = QTreeView(self.central_widget) self.tree_view.setGeometry(QRect(10, 40, 451, 581)) self.tree_view.setColumnWidth(0, 150) self.comboBox.setCurrentText('uia') self.__show_tree() self.table_view = QTableView(self.central_widget) self.table_view.setGeometry(QRect(470, 40, 451, 581)) self.comboBox.activated[str].connect(self.__show_tree) self.tree_view.clicked.connect(self.__show_property) def __show_tree(self, _backend='uia'): self.__initialize_calc(_backend) def __initialize_calc(self, _backend): self.element_info = backend.registry.backends[ _backend].element_info_class() self.tree_model = MyTreeModel(self.element_info, _backend) self.tree_model.setHeaderData(0, Qt.Horizontal, 'Controls') self.tree_view.setModel(self.tree_model) def __show_property(self, index=None): data = index.data() self.table_model = MyTableModel(self.tree_model.props_dict.get(data), self) self.table_view.wordWrap() self.table_view.setModel(self.table_model) self.table_view.setColumnWidth(1, 320) element = self.tree_model.element_dict.get(data, None) if element is not None: with contextlib.suppress(Exception): element.set_focus() locate_element = center_locate_element(element) if locate_element is not None: pyperclip.copy('{0}, {1}'.format(*locate_element)) else: pyperclip.copy('Retângulo não identificado.') try: im: Image = element.capture_as_image() im.show() except: alert( title='Atenção', text= 'O elemento selecionado não é uma imagem ou não contém o atributo show.' ) element.draw_outline(colour='green', thickness=4)
class DebugModulesWidget(QWidget, DockContextHandler): def __init__(self, parent, name, data): if not type(data) == binaryninja.binaryview.BinaryView: raise Exception('expected widget data to be a BinaryView') self.bv = data QWidget.__init__(self, parent) DockContextHandler.__init__(self, self, name) self.actionHandler = UIActionHandler() self.actionHandler.setupActionHandler(self) self.table = QTableView(self) self.model = DebugModulesListModel(self.table, data) self.table.setModel(self.model) self.item_delegate = DebugModulesItemDelegate(self) self.table.setItemDelegate(self.item_delegate) # self.table.setSortingEnabled(True) self.table.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) self.table.setSelectionMode(QAbstractItemView.ExtendedSelection) self.table.verticalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.table.verticalHeader().setVisible(False) self.table.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.resizeColumnsToContents() self.table.resizeRowsToContents() for i in range(len(self.model.columns)): self.table.setColumnWidth( i, self.item_delegate.sizeHint( self.table.viewOptions(), self.model.index(-1, i, QModelIndex())).width()) update_layout = QHBoxLayout() update_layout.setContentsMargins(0, 0, 0, 0) update_label = QLabel("Data is Stale") update_button = QPushButton("Refresh") update_button.clicked.connect(lambda: self.refresh()) update_layout.addWidget(update_label) update_layout.addStretch(1) update_layout.addWidget(update_button) self.update_box = QWidget() self.update_box.setLayout(update_layout) self.layout = QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.addWidget(self.table) self.setLayout(self.layout) def notifyOffsetChanged(self, offset): pass def refresh(self): debug_state = binjaplug.get_state(self.bv) debug_state.ui.update_modules() def notifyModulesChanged(self, new_modules): self.model.update_rows(new_modules) self.table.resizeColumnsToContents() self.layout.removeWidget(self.update_box) self.update_box.setVisible(False) def mark_dirty(self): self.layout.addWidget(self.update_box) self.update_box.setVisible(True) def contextMenuEvent(self, event): self.m_contextMenuManager.show(self.m_menu, self.actionHandler) def shouldBeVisible(self, view_frame): if view_frame is None: return False else: return True
class Main(QWidget): def __init__(self): super().__init__() self.user_entry = QLineEdit("user5301") # self.user_entry.setStyleSheet("font: corbel; font-size: 12px;") self.pass_entry = QLineEdit("e", self) self.odbc = "" self.bars = "" self.table_query = "" self.pass_entry.setEchoMode(QLineEdit.PasswordEchoOnEdit) self.ru_entry = QLineEdit("328845", self) # self.ru_entry.setStyleSheet("font: corbel; font-size: 12px;") self.cur_entry = QLineEdit("840") # self.cur_entry.setStyleSheet("font: corbel; font-size: 12px;") self.balance_entry = QLineEdit("213000001") # self.balance_entry.setStyleSheet("font: corbel; font-size: 12px;") self.ok_button = QPushButton( "Запрос (Пользователь и пароль должны быть правильными.)") self.ok_button.setStyleSheet( "font: corbel; font-size: 12px; color: rgb(0, 0, 255)") # self.ok_button.setStyleSheet("color: rgb(160, 70, 70)") self.error_label = QLabel("Количество строк или ошибки будут тут") self.error_label.setStyleSheet("color: rgb(255, 0, 0)") self.start_button1 = QPushButton("Старт") self.stop_button1 = QPushButton("Стоп") self.start_button1.setEnabled(True) self.stop_button1.setEnabled(False) self.start_button1.setStyleSheet("background-color: rgb(81,142,144)") self.interval_l = QLabel("Интервал") # self.interval_l.setStyleSheet("font: corbel; font-size: 12px; color: rgb(0, 0, 255)") self.interval_e = QLineEdit() self.timer_id = 0 self.table = QTableView() # Create model # self.sqm = QSqlQueryModel(parent=self.table) self.standart_item_model = QStandardItemModel() self.init_ui() def on_start(self): password = self.pass_entry.text() if password == "e": self.print_and_label("Вы не ввели пароль!") else: self.timer_id = self.startTimer(int(self.interval_e.text())) self.start_button1.setEnabled(False) self.stop_button1.setEnabled(True) def on_stop(self): print("Таймер остановлен.", self.timer_id) if self.timer_id: self.killTimer(self.timer_id) self.timer_id = 0 self.start_button1.setEnabled(True) self.stop_button1.setEnabled(False) def print_and_label(self, text): print(text) self.error_label.setText(text) def run(self): rows = connect_to_base_and_execute( self.table_query.format(self.ru_entry.text().strip(), self.cur_entry.text().strip(), int(self.balance_entry.text().strip())), self.error_label, self.user_entry.text(), keyring.get_password(getpass.getuser(), self.user_entry.text()), self.ok_button, "''") self.standart_item_model.clear() self.table.clearSpans() item_list = [] if rows: #print("rows", rows) for values in rows: item_list = [] for value in values: if type(value) == int: item = QStandardItem(str(value)) else: item = QStandardItem(value) item_list.append(item) self.standart_item_model.appendRow(item_list) self.standart_item_model.setHorizontalHeaderLabels( ["Счет", "РУ", "Валюта", "Остаток"]) self.table.setModel(self.standart_item_model) self.table.setColumnWidth(0, 150) self.table.setColumnWidth(1, 60) self.table.setColumnWidth(2, 80) self.table.setColumnWidth(3, 150) if self.standart_item_model.rowCount() > 0: frequency = 2500 duration = 2000 winsound.Beep(frequency, duration) def timerEvent(self, event): # self.error_label.setText("Сработал таймер" + str(event.timerId())) print("Сработал таймер", str(event.timerId())) self.run() def init_ui(self): file_name = 'ini_balance' with open(file_name) as f: lines = f.readlines() try: self.interval_e.setText(lines[0]) except: self.error_label.setText( ' Возможно в первой строке файла ini_balance нет времени таймера!' ) try: self.bars = lines[1] except: self.error_label.setText( ' Возможно во второй строке файла ini_balance нет запроса!' ) try: self.table_query = lines[2] except: self.error_label.setText( ' Возможно в третьей строке файла ini_balance нет запроса!' ) label = QLabel(self) label.setAlignment(Qt.AlignRight) label.resize(30, 30) image = QPixmap("b.jfif", format="JPG").scaled(label.width(), label.height()) #image = QPixmap("mon.png", format="PNG") label.setPixmap(image) self.group = QGroupBox("Таймер остатка") self.group.setStyleSheet("font: corbel; font-size: 14px;") v_group = QVBoxLayout() # Контейнер для группы v_group.addWidget(self.start_button1) v_group.addWidget(self.stop_button1) v_group.addWidget(self.interval_l) v_group.addWidget(self.interval_e) self.group.setLayout(v_group) form = QFormLayout() form.addRow("", label) form.addRow("По&льзователь", self.user_entry) form.addRow("&Пароль", self.pass_entry) form.addRow("&МФО области", self.ru_entry) form.addRow("&Валюта", self.cur_entry) form.addRow("&Необходимый остаток", self.balance_entry) form.addRow("", self.ok_button) form.addRow("", self.group) form.addRow("&Результат", self.table) form.addRow("&Ошибки", self.error_label) self.setLayout(form) # k10 - work with password # is_right in - hash, return - T/F; set_p in - pass return - hash hash_pass = hashlib.md5(self.pass_entry.text().encode('utf-8')) # print("hash", hash_pass) # keyring.set_password(getpass.getuser(), self.user_entry.text(), self.pass_entry.text()) self.pass_entry.editingFinished.connect( lambda: k10.keyring_pass(getpass.getuser(), self.user_entry.text( ), self.pass_entry, hash_pass, self.ru_entry)) self.ok_button.clicked.connect(lambda: self.run()) self.start_button1.clicked.connect(self.on_start) self.stop_button1.clicked.connect(self.on_stop) self.setGeometry(300, 100, 650, 550) self.setWindowTitle('Ждем деньги') self.show()
class WorkSpaceWidget(QWidget): def __init__(self, parent, file_clicked): super().__init__(parent) self.main_layout = QVBoxLayout() # Tool Bar self.toolbar = QToolBar(self) # delete action on toolbar self.delete_action_tb = QAction("DELETE TABLE ROW", self) self.delete_action_tb.setStatusTip("Obrisi Red U Tabeli") self.delete_action_tb.triggered.connect(self.delete_table_row_tb) self.toolbar.addAction(self.delete_action_tb) # ADD ONE TOOLBAR BUTTON self.add_one_action_tb = QAction("ADD TABLE ROW", self) self.add_one_action_tb.setStatusTip("ADD SINGLE ROW TO TABLE") self.add_one_action_tb.triggered.connect(self.add_table_row_handler) self.toolbar.addAction(self.add_one_action_tb) self.setLayout(self.main_layout) self.file_clicked = file_clicked self.abstract_table_model = AbstractTableModel(self.file_clicked) self.database_type = self.abstract_table_model.database_type self.create_tab_widget() self.check_database_type_and_run() self.tab_widget.addTab(self.main_table, QIcon("img/iconXLNK.png"), self.file_clicked) self.main_layout.addWidget(self.toolbar) self.main_layout.addWidget(self.tab_widget) # TODO Srediti da funkcija bise element iz tabele klikom na dugme delete u ToolBar-u. def delete_table_row_tb(self): print("Ugraditi funkciju za brisanje reda iz tabele.") # TODO srediti dodavnje u tabelu. def add_table_row_handler(self): self.addWindow = InsertOneForm( self.abstract_table_model.file_handler.metadata[0]["columns"], self.check_data) self.main_layout.addWidget(self.addWindow) # chekiranje validnosti podataka def check_data(self): self.return_data = self.addWindow.final_data self.return_metadata = self.addWindow.metadata_columns not_valid = False i = 0 for data in self.return_data: if data.get(self.return_metadata[i]) == "" or data.get( self.return_metadata[i]) == " " or data.get( self.return_metadata[i]) == None: print("Nije uredu") not_valid = True else: print("sve ok") i += 1 if not_valid != True: self.new_instanc = SmartPhone(self.return_data[0]["brand"], self.return_data[1]["model"], self.return_data[2]["price"], self.return_data[3]["made_in"], self.return_data[4]["dealer"], self.return_data[5]["imei_code"], self.return_data[6]["stores"]) self.abstract_table_model.file_handler.insert(self.new_instanc) def check_database_type_and_run(self): if self.database_type == "serial" or self.database_type == "sequential": self.create_table() else: # TODO Obraditi izuzetak. pass def create_tab_widget(self): self.tab_widget = QTabWidget(self) self.tab_widget.setTabsClosable(True) def create_table(self): self.main_table = QTableView(self.tab_widget) self.main_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.main_table.setSelectionMode(QAbstractItemView.SingleSelection) self.main_table.setModel(self.abstract_table_model) # makes responsive tabel sizes max_width = 1620 // self.abstract_table_model.column_number() for width in range(self.abstract_table_model.column_number()): self.main_table.setColumnWidth(width, max_width)