def __init__(self): super(CarsMenu, self).__init__( ) # возвращает объект родителя класса CarsMenu и вызывает его конструктор self.menu = Ui_MainWindow() self.menu.setupUi( self) # Вызываем функцию setupUi чтобы отрисовать интерфейс self.init_UI()
class Editor(QtGui.QMainWindow): def __init__(self): super(Editor, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.show()
class mywindow(QtWidgets.QMainWindow): def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self)
class Main(QtGui.QMainWindow): def __init__(self,parent=None): super(Main, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.show() self.iniciar_botones() def iniciar_botones(self): """ Funcion que inicia las señales de los objetos """ self.ui.BotonMarcas.clicked.connect(self.entraMarca) self.ui.BotonClientes.clicked.connect(self.entraCliente) self.ui.BotonModelos.clicked.connect(self.entraModelo) def entraMarca(self): marca = vista_marca.Main(self) marca.exec_() def entraCliente(self): cliente=controlador_modulo_cliente.Main(self) cliente.exec_() def entraModelo(self): modelo=vista_modelo.Main(self) modelo.exec_()
def __init__(self, rut=""): super(Menu, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.rut = rut self.productos = [] self.cantidad = 1 self.setSignals() self.show() self.inicializaValores() self.inicializar_tabla()
def __init__(self): super(ApplicationWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) data = os.getcwd() + '\Datasets\world_data.csv' self.dataFrame = pd.read_csv(data) worldCupData = os.getcwd() + '\Datasets\world_cup.csv' self.worldCupDataFrame = pd.read_csv(worldCupData) self.ui.covid19DataButton.clicked.connect( lambda: self.OpenWindow('COVID-19')) self.ui.worldCupDataButton.clicked.connect( lambda: self.OpenWindow('WorldCup'))
# -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QMainWindow, QApplication from menu import Ui_MainWindow app = QApplication(sys.argv) mainWindow = QMainWindow() ui = Ui_MainWindow() ui.setupUi(mainWindow) mainWindow.setWindowTitle('菜单和工具栏') mainWindow.show() sys.exit(app.exec_())
class CarsMenu(QtWidgets.QMainWindow): # наследуемся от класса в файле menu def __init__(self): super(CarsMenu, self).__init__( ) # возвращает объект родителя класса CarsMenu и вызывает его конструктор self.menu = Ui_MainWindow() self.menu.setupUi( self) # Вызываем функцию setupUi чтобы отрисовать интерфейс self.init_UI() def init_UI(self): # Функция для доработки графического интерфейса self.setWindowTitle('autoРУshka') self.setWindowIcon(QIcon('icon.png')) self.menu.lineEdit.setPlaceholderText( 'Введите ссылку с auto.ru:') # подсказка для пользователя self.menu.parsingButton.clicked.connect(self.pars) self.setFixedSize(821, 737) # Фиксированный размер окна def pars(self): try: link = self.menu.lineEdit.text() str(link) car_url = [] while True: response = requests.get(link) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') cards = soup.find_all('div', class_='ListingItem-module__main') # Добавляет в словарь ссылки авто for card in cards: car_url.append(card.find('a').get('href')) # Проверка на наличие страницы if soup.find('a', class_='ListingPagination-module__next'): # Ловит строку страниц stranica = soup.find( 'a', class_='ListingPagination-module__next').get('href') link = stranica else: break if link == None: break print(stranica) info = QMessageBox() info.setWindowTitle('Ответ') info.setText( 'Ожидайте! Если у вас более 100 машин, то нужно набраться терпения и ждать. :)' ) info.setIcon(QMessageBox.Warning) info.setStandardButtons(QMessageBox.Ok) info.exec_() cars = [] for car in car_url: response = requests.get(car) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') try: title = soup.find( 'div', class_='CardSidebarActions__title').get_text() gorod = soup.find( 'span', class_='MetroListPlace_space').get_text() car_year = soup.find( 'a', class_='Link Link_color_black').get_text() opisanie = soup.find( 'div', class_='CardDescription__textInner').get_text() car_probeg = soup.find( 'li', class_='CardInfoRow CardInfoRow_kmAge').get_text() vladelci = soup.find( 'li', class_='CardInfoRow CardInfoRow_ownersCount').get_text( ) price = soup.find( 'span', class_='OfferPriceCaption__price').get_text() except: pass cars.append({ 'Модель': title, 'Цена': int(price.replace('\xa0', '').replace('₽', '')), 'Ссылка на авто': car, 'Город': gorod, 'Пробег': int( car_probeg.replace('\xa0', '').replace('Пробег', '').replace('км', '')), 'Год выпуска': car_year, 'Владельцы': vladelci.replace('Владельцы', ''), 'Описание': opisanie }) #print(cars) # newline - перевод строки, чтобы не было пустых строк в файле with open(f'{title}.csv', 'w', encoding='cp1251', newline='') as f: # delimiter - разделитель для того, чтобы номарльно открывались по умолчанию writer = csv.writer(f, delimiter=';') writer.writerow([ 'Марка', 'Цена', 'Ссылка на авто', 'Горо д', 'Пробег', 'Год выпуска', 'Владельцы', 'Описание' ]) for items in cars: try: writer.writerow([ items['Модель'], items['Цена'], items['Ссылка на авто'], items['Город'], items['Пробег'], items['Год выпуска'], items['Владельцы'], items['Описание'] ]) except: pass info1 = QMessageBox() info1.setWindowTitle('Ответ') info1.setText('Мы собрали для вас всю информацию!') info1.setIcon(QMessageBox.Warning) info1.setStandardButtons(QMessageBox.Ok) info1.setInformativeText('Смотрите в папке <kursach>') info1.exec_() self.menu.lineEdit.setText('') pass except: error = QMessageBox() error.setWindowTitle('Ошибка') error.setText('Вставьте ссылку либо вы указали неверную ссылку!') error.setIcon(QMessageBox.Warning) error.setStandardButtons(QMessageBox.Ok) error.setInformativeText( 'Пример: \nhttps://auto.ru/rostovskaya_oblast/cars/daewoo/tacuma/all/' ) self.menu.lineEdit.setText('') error.exec_() pass
class Menu(QtGui.QMainWindow): __header_table__ = [(u"Código"), (u"Descripción"), (u"Categoria"), (u"Proveedor"), (u"Precio Unitario"), (u"Cantidad"), (u"Total")] def __init__(self, rut=""): super(Menu, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.rut = rut self.productos = [] self.cantidad = 1 self.setSignals() self.show() self.inicializaValores() self.inicializar_tabla() def setSignals(self): self.ui.tw_lista_productos.currentCellChanged.connect( self.obtiene_id_producto) self.ui.actionAbrir_inventario.triggered.connect(self.abrir_inventario) self.ui.actionGenerar_Informe_Diario.triggered.connect( self.abrir_generar_informe) self.ui.btn_buscar_producto.clicked.connect(self.agregar_producto) self.ui.btn_pagar.clicked.connect(self.realizar_venta) self.ui.btn_quitar_producto.clicked.connect(self.quitar_producto) # SOLUCION MOMENTANEA ---------------------------------------------- self.ui.btn_mas.clicked.connect(self.agregar_cantidad) self.ui.btn_menos.clicked.connect(self.disminuir_cantidad) # ------------------------------------------------------------------ # self.ui.tw_lista_productos.cellChanged.connect(self.modificar_cantidad) def inicializaValores(self): self.ui.lb_precio_total.setText("$0") resultado = controlador_menu.buscaTrabajador(self.rut) self.ui.lb_nombre.setText("Bienvenido " + resultado[1]) self.ui.lb_apellido.setText(resultado[2]) self.ui.lb_rut.setText(resultado[0]) def inicializar_tabla(self): self.ui.tw_lista_productos.sortItems(0, QtCore.Qt.AscendingOrder) self.ui.tw_lista_productos.setColumnCount(7) self.ui.tw_lista_productos.setHorizontalHeaderLabels( self.__header_table__) self.ui.tw_lista_productos.setSelectionBehavior( QtGui.QTableWidget.SelectRows) self.ui.tw_lista_productos.sortItems(0, QtCore.Qt.DescendingOrder) self.ui.tw_lista_productos.resizeColumnsToContents() self.ui.tw_lista_productos.horizontalHeader().setResizeMode( 3, self.ui.tw_lista_productos.horizontalHeader().Stretch) def obtiene_id_producto(self, fila_actual, columna_actual, fila_previa, columna_previa): producto = self.ui.tw_lista_productos.item(fila_actual, 0) try: self.id = producto.text() except: pass def agregar_producto(self): entrada = self.ui.le_codigo.text().lstrip() valido = controlador_menu.validaTexto(entrada, "num") if (valido): aux_producto = controlador_menu.buscarProductoPorCodigo(entrada) if (len(aux_producto) != 0): producto = list(aux_producto[0]) repetido = False for j in range(len(self.productos)): if (producto[0] == self.productos[j][0]): repetido = True if (repetido == False): stock1 = controlador_menu.verificaStock(entrada, 0) if (stock1): print("El producto se agrega como nuevo producto") producto.append(1) self.productos.append(producto) self.actualiza_tabla() else: controlador_menu.errorMessage(self, "No hay mas stock") else: # Aumentar el contador del producto print("El producto se repite") indice_producto = self.encontrar_sublista( self.productos, producto[0])[0] stock = controlador_menu.verificaStock( entrada, self.productos[indice_producto][6]) if (stock): self.productos[indice_producto][6] += 1 print("Hay stock para comprar") self.actualiza_tabla() else: controlador_menu.errorMessage(self, "No hay mas stock") else: controlador_menu.errorMessage(self, "No existe el producto") else: controlador_menu.errorMessage(self, "Ingrese un codigo valido") self.ui.le_codigo.setText("") def quitar_producto(self): index = self.ui.tw_lista_productos.currentIndex() if (index.row() == -1): controlador_menu.errorMessage(self, "No se ha seleccionado nada") else: msgBox = QtGui.QMessageBox() msgBox.setIcon(QtGui.QMessageBox.Critical) msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) msgBox.setWindowTitle(u"Advertencia") msgBox.setText(u"Eliminar producto de la venta?") press = msgBox.exec_() if (press == QtGui.QMessageBox.Ok): producto = list( controlador_menu.buscarProductoPorCodigo(self.id)[0]) indice = self.encontrar_sublista(self.productos, producto[0]) print(indice) self.productos.pop(indice[0]) print(self.productos) self.actualiza_tabla() else: return False def actualiza_tabla(self): row = len(self.productos) self.ui.tw_lista_productos.setRowCount(row) for i, data in enumerate(self.productos): row = [ QtGui.QTableWidgetItem(str(data[0])), QtGui.QTableWidgetItem(data[1]), QtGui.QTableWidgetItem(data[2]), QtGui.QTableWidgetItem(data[4]), QtGui.QTableWidgetItem(data[3]), QtGui.QTableWidgetItem(str(data[6])), QtGui.QTableWidgetItem( "$" + (str(int(data[6]) * int(str(data[3])[1:])))) ] for j, cell in enumerate(row): self.ui.tw_lista_productos.setItem(i, j, cell) self.ui.tw_lista_productos.resizeColumnsToContents() self.ui.tw_lista_productos.horizontalHeader().setResizeMode( 3, self.ui.tw_lista_productos.horizontalHeader().Stretch) suma_total = 0 if (len(self.productos) != 0): for x in range(len(self.productos)): total_por_producto = self.ui.tw_lista_productos.item(x, 6) suma_total = suma_total + int( str(total_por_producto.text())[1:]) self.ui.lb_precio_total.setText("$" + str(suma_total)) else: self.ui.lb_precio_total.setText("$0") def realizar_venta(self): fecha = time.strftime('%y-%m-%d') trabajador = self.ui.lb_rut.text() idVenta = controlador_menu.guardarVenta(fecha, trabajador) for i in range(len(self.productos)): codigo = (self.ui.tw_lista_productos.item(i, 0)).text() cantidad = (self.ui.tw_lista_productos.item(i, 5)).text() controlador_menu.guardarVentaProducto(idVenta, codigo, cantidad) controlador_menu.modificarStockPorCodigo(codigo, cantidad) controlador_menu.correctMessage(self, "Venta Realizada Correctamente") self.productos = [] self.cantidad = 1 self.actualiza_tabla() def abrir_inventario(self): self.inventario = Inventario(self.rut) self.inventario.show() def abrir_generar_informe(self): self.informe = Informe() self.informe.show() def encontrar_sublista(self, lista, valor): for sub_i, sublist in enumerate(lista): try: return (sub_i, sublist.index(valor)) except ValueError: pass def agregar_cantidad(self): index = self.ui.tw_lista_productos.currentIndex() if (index.row() == -1): controlador_menu.errorMessage(self, "No se ha seleccionado nada") else: producto = list( controlador_menu.buscarProductoPorCodigo(self.id)[0]) indice_producto = self.encontrar_sublista(self.productos, producto[0])[0] stock = controlador_menu.verificaStock( self.id, self.productos[indice_producto][6]) if (stock): self.productos[indice_producto][6] += 1 print("Hay stock para comprar") self.actualiza_tabla() else: controlador_menu.errorMessage(self, "No hay mas stock") def disminuir_cantidad(self): arreglo_producto = controlador_menu.buscarProductoPorCodigo(self.id) producto = list(arreglo_producto[0]) print(producto[0]) print(self.productos) indice_producto = self.encontrar_sublista(self.productos, producto[0])[0] self.productos[indice_producto][6] -= 1 self.actualiza_tabla()
def __init__(self): super(Editor, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.show()
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self)
def __init__(self,parent=None): super(Main, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.show() self.iniciar_botones()