def __on_open(self): window = QMdiSubWindow() window.setAttribute(Qt.WA_DeleteOnClose, True) window.setWindowTitle('Sub Window ' + str(MyMainWindow.window_index)) window.resize(300, 200) self.mdi_area.addSubWindow(window) window.show() MyMainWindow.window_index += 1
def sendOnecard(self): ''' 随机一张牌,发出去。 ''' randomflag = self.randomsend(1) subcard = QMdiSubWindow() subcard.setWidget(Card(randomflag)) self.mid.addSubWindow(subcard) subcard.setWindowFlags(Qt.WindowMinimizeButtonHint) # 设置窗口属性,让其只显示最小化按钮。 subcard.resize(150, 200) subcard.show()
def sendFivecards(self): ''' 随机5张牌 ''' randomflag = self.randomsend(5) for card in randomflag: # 遍历5张牌,发出去。 subcard = QMdiSubWindow() subcard.setWidget(Card(card)) self.mid.addSubWindow(subcard) subcard.setWindowFlags(Qt.WindowMinimizeButtonHint) # 设置窗口属性,让其只显示最小化按钮。 subcard.resize(150, 200) subcard.show()
def WindowTrig(self, p): #===================================================================================================================================================================== if p.text() == "Patron Memento": subState = QMdiSubWindow() subState.resize(400, 400) widgetState = QWidget() self.layoutState = QGridLayout(widgetState) self.layoutState.setContentsMargins(0, 0, 0, 0) self.layoutState.setObjectName("gridState") labelEstado = QLabel() labelEstado.setText("Memento") self.layoutState.addWidget(labelEstado, 0, 1, 1, 1) self.comboEstado = QComboBox() self.comboEstado.addItem("blue") self.comboEstado.addItem("yellow") self.comboEstado.addItem("red") self.comboEstado.addItem("green") self.layoutState.addWidget(self.comboEstado, 0, 2, 1, 1) btnanterior = QPushButton('Color Anterior') self.layoutState.addWidget(btnanterior, 1, 2, 1, 1) btnanterior.clicked.connect(self.button_anterior) btnnext = QPushButton('Color Siguiente') self.layoutState.addWidget(btnnext, 1, 4, 1, 1) btnnext.clicked.connect(self.button_next) btnver = QPushButton('Ver') self.layoutState.addWidget(btnver, 1, 6, 1, 1) btnver.clicked.connect(self.button_ver) subState.setWidget(widgetState) subState.setWindowTitle("Patrón Memento") self.mdi.addSubWindow(subState) subState.show()
class MainWindow(QMainWindow): def __init__(self, win_arg): super(MainWindow, self).__init__() loadUi(getcwd() + '/ui/main.ui', self) self.mdi.setBackground(QBrush(QImage(getcwd() + "/images/logo.png"))) self.setWindowIcon(QIcon(getcwd() + "/images/icon.ico")) self.menu_3.setEnabled(False) if "-FS" in win_arg: self.arg_FS() logging.config.fileConfig(getcwd() + '/setting/logger_conf.ini') self.logger = logging.getLogger("MainLog") self.show() self.setDisabled(True) self.login = login_window.LoginWindow(self) # self.admin_login() def access(self): for item in User().access_list(self.__class__.__name__): a = getattr(self, item["atr1"]) if item["atr2"]: a = getattr(a, item["atr2"]) if item["value"]: try: val = int(item["value"]) except: val = item["value"] a(val) else: a() def view_material(self): self.material = supply_material.MaterialSupplyList() self.sub_material = QMdiSubWindow() self.sub_material.setWidget(self.material) self.mdi.addSubWindow(self.sub_material) self.sub_material.resize(self.material.size()) self.sub_material.show() def view_material_provider(self): self.mat_prov = provider.ProviderMaterial() self.sub_provider = QMdiSubWindow() self.sub_provider.setWidget(self.mat_prov) self.mdi.addSubWindow(self.sub_provider) self.sub_provider.resize(self.mat_prov.size()) self.sub_provider.show() def view_material_name(self): self.material_neme = supply_material.MaterialName() self.sub_mater_name = QMdiSubWindow() self.sub_mater_name.setWidget(self.material_neme) self.mdi.addSubWindow(self.sub_mater_name) self.sub_mater_name.resize(self.material_neme.size()) self.sub_mater_name.show() def view_comparing_name(self): self.comparing_name = comparing.ComparingName() self.sub_comp_name = QMdiSubWindow() self.sub_comp_name.setWidget(self.comparing_name) self.mdi.addSubWindow(self.sub_comp_name) self.sub_comp_name.resize(self.comparing_name.size()) self.sub_comp_name.show() def view_accessories_name(self): self.accessories_name = supply_accessories.AccessoriesName() self.sub_accsess_name = QMdiSubWindow() self.sub_accsess_name.setWidget(self.accessories_name) self.mdi.addSubWindow(self.sub_accsess_name) self.sub_accsess_name.resize(self.accessories_name.size()) self.sub_accsess_name.show() def view_accessories_provider(self): self.access_prov = provider.ProviderAccessories() self.sub_provider_access = QMdiSubWindow() self.sub_provider_access.setWidget(self.access_prov) self.mdi.addSubWindow(self.sub_provider_access) self.sub_provider_access.resize(self.access_prov.size()) self.sub_provider_access.show() def view_accessories(self): self.accessories = supply_accessories.AccessoriesSupplyList() self.accessories.set_settings() self.sub_accessories = QMdiSubWindow() self.sub_accessories.setWidget(self.accessories) self.mdi.addSubWindow(self.sub_accessories) self.sub_accessories.resize(self.accessories.size()) self.sub_accessories.show() def view_staff_country(self): self.staff_country = staff.Country() self.sub_staff_country = QMdiSubWindow() self.sub_staff_country.setWidget(self.staff_country) self.mdi.addSubWindow(self.sub_staff_country) self.sub_staff_country.resize(self.staff_country.size()) self.sub_staff_country.show() def view_staff_position(self): self.staff_position = staff.StaffPosition() self.sub_staff_position = QMdiSubWindow() self.sub_staff_position.setWidget(self.staff_position) self.mdi.addSubWindow(self.sub_staff_position) self.sub_staff_position.resize(self.staff_position.size()) self.sub_staff_position.show() def view_staff_list(self): self.staff_list = staff.Staff() self.sub_staff_list = QMdiSubWindow() self.sub_staff_list.setWidget(self.staff_list) self.mdi.addSubWindow(self.sub_staff_list) self.sub_staff_list.resize(self.staff_list.size()) self.sub_staff_list.show() def view_staff_calendar(self): self.staff_calendar = notification.WorkCalendar() self.sub_staff_calendar = QMdiSubWindow() self.sub_staff_calendar.setWidget(self.staff_calendar) self.mdi.addSubWindow(self.sub_staff_calendar) self.sub_staff_calendar.resize(self.staff_calendar.size()) self.sub_staff_calendar.show() def view_staff_card(self): self.staff_card = staff_traffic.StaffCardList() self.sub_staff_card = QMdiSubWindow() self.sub_staff_card.setWidget(self.staff_card) self.mdi.addSubWindow(self.sub_staff_card) self.sub_staff_card.resize(self.staff_card.size()) self.sub_staff_card.show() def view_staff_traffic(self): self.staff_traffic = staff_traffic.StaffTraffic() self.sub_staff_traffic = QMdiSubWindow() self.sub_staff_traffic.setWidget(self.staff_traffic) self.mdi.addSubWindow(self.sub_staff_traffic) self.sub_staff_traffic.resize(self.staff_traffic.size()) self.sub_staff_traffic.show() def view_settings_path(self): self.sett_path = program_settings.SettingsPath() self.sub_sett_path = QMdiSubWindow() self.sub_sett_path.setWidget(self.sett_path) self.mdi.addSubWindow(self.sub_sett_path) self.sub_sett_path.resize(self.sett_path.size()) self.sub_sett_path.show() def view_settings_road(self): self.sett_road = program_settings.SettingsRoad() self.sub_sett_road = QMdiSubWindow() self.sub_sett_road.setWidget(self.sett_road) self.mdi.addSubWindow(self.sub_sett_road) self.sub_sett_road.resize(self.sett_road.size()) self.sub_sett_road.show() def view_clients(self): self.clients = clients.ClientList() self.sub_clients = QMdiSubWindow() self.sub_clients.setWidget(self.clients) self.mdi.addSubWindow(self.sub_clients) self.sub_clients.resize(self.clients.size()) self.sub_clients.show() def view_operation(self): self.operation_list = operation.OperationList() self.sub_operation_list = QMdiSubWindow() self.sub_operation_list.setWidget(self.operation_list) self.mdi.addSubWindow(self.sub_operation_list) self.sub_operation_list.resize(self.operation_list.size()) self.sub_operation_list.show() def view_add_operation(self): self.add_operation_list = operation.OperationAddList() self.sub_add_operation_list = QMdiSubWindow() self.sub_add_operation_list.setWidget(self.add_operation_list) self.mdi.addSubWindow(self.sub_add_operation_list) self.sub_add_operation_list.resize(self.add_operation_list.size()) self.sub_add_operation_list.show() def view_product(self): self.article_list = article.ArticleListOld() self.sub_article_list = QMdiSubWindow() self.sub_article_list.setWidget(self.article_list) self.mdi.addSubWindow(self.sub_article_list) self.sub_article_list.resize(self.article_list.size()) self.sub_article_list.show() def view_order_ooo_list(self): self.order_list = order.OrderListOOO() self.sub_order_list = QMdiSubWindow() self.sub_order_list.setWidget(self.order_list) self.mdi.addSubWindow(self.sub_order_list) self.sub_order_list.resize(self.order_list.size()) self.sub_order_list.show() def view_order_ip_list(self): self.order_list = order.OrderListIP() self.sub_order_list = QMdiSubWindow() self.sub_order_list.setWidget(self.order_list) self.mdi.addSubWindow(self.sub_order_list) self.sub_order_list.resize(self.order_list.size()) self.sub_order_list.show() def view_cut_mission_list(self): self.cut_mission_list = cut.CutListMission() self.sub_cut_mission_list = QMdiSubWindow() self.sub_cut_mission_list.setWidget(self.cut_mission_list) self.mdi.addSubWindow(self.sub_cut_mission_list) self.sub_cut_mission_list.resize(self.cut_mission_list.size()) self.sub_cut_mission_list.show() def view_cut_list(self): self.cut_list = cut.CutList() self.sub_cut_list = QMdiSubWindow() self.sub_cut_list.setWidget(self.cut_list) self.mdi.addSubWindow(self.sub_cut_list) self.sub_cut_list.resize(self.cut_list.size()) self.sub_cut_list.show() def view_article_list(self): self.article_list_all = article.ArticleListAll() self.sub_article_list_all = QMdiSubWindow() self.sub_article_list_all.setWidget(self.article_list_all) self.mdi.addSubWindow(self.sub_article_list_all) self.sub_article_list_all.resize(self.article_list_all.size()) self.sub_article_list_all.show() def view_article_test(self): self.article_test = article.ArticleList() self.sub_article_test = QMdiSubWindow() self.sub_article_test.setWidget(self.article_test) self.mdi.addSubWindow(self.sub_article_test) self.sub_article_test.resize(self.article_test.size()) self.sub_article_test.show() def view_pack_list(self): self.pack_list = pack.PackList() self.sub_pack_list = QMdiSubWindow() self.sub_pack_list.setWidget(self.pack_list) self.mdi.addSubWindow(self.sub_pack_list) self.sub_pack_list.resize(self.pack_list.size()) self.sub_pack_list.show() def view_pay_plus_minus(self): self.pay_plus_minus = pay.PayList() self.sub_pay_plus_minus = QMdiSubWindow() self.sub_pay_plus_minus.setWidget(self.pay_plus_minus) self.mdi.addSubWindow(self.sub_pay_plus_minus) self.sub_pay_plus_minus.resize(self.pay_plus_minus.size()) self.sub_pay_plus_minus.show() def view_other_order_edi(self): self.input_order_edi = other.OrderEDI() self.sub_input_order_edi = QMdiSubWindow() self.sub_input_order_edi.setWidget(self.input_order_edi) self.mdi.addSubWindow(self.sub_input_order_edi) self.sub_input_order_edi.resize(self.input_order_edi.size()) self.sub_input_order_edi.show() def view_audit_verification(self): self.audit_verification = audit.AuditVerification() self.sub_audit_verification = QMdiSubWindow() self.sub_audit_verification.setWidget(self.audit_verification) self.mdi.addSubWindow(self.sub_audit_verification) self.sub_audit_verification.resize(self.audit_verification.size()) self.sub_audit_verification.show() def view_salary_work(self): self.salary_list = salary.SalaryList() self.sub_salary_list = QMdiSubWindow() self.sub_salary_list.setWidget(self.salary_list) self.mdi.addSubWindow(self.sub_salary_list) self.sub_salary_list.resize(self.salary_list.size()) self.sub_salary_list.show() def view_pack_operation_list(self): self.operation_list = operation_list.PayList(no_start_set=True) self.sub_operation_list = QMdiSubWindow() self.sub_operation_list.setWidget(self.operation_list) self.mdi.addSubWindow(self.sub_operation_list) self.sub_operation_list.resize(self.operation_list.size()) self.sub_operation_list.show() def view_product_warehouse(self): self.product_warehouse = warehouse_product.Warehouse() self.sub_product_warehouse = QMdiSubWindow() self.sub_product_warehouse.setWidget(self.product_warehouse) self.mdi.addSubWindow(self.sub_product_warehouse) self.sub_product_warehouse.resize(self.product_warehouse.size()) self.sub_product_warehouse.show() def view_product_warehouse_2(self): self.product_warehouse2 = warehouse_product.Warehouse2() self.sub_product_warehouse2 = QMdiSubWindow() self.sub_product_warehouse2.setWidget(self.product_warehouse2) self.mdi.addSubWindow(self.sub_product_warehouse2) self.sub_product_warehouse2.resize(self.product_warehouse2.size()) self.sub_product_warehouse2.show() def view_warehouse_rest(self): self.rest_warehouse = warehouse_rest.WarehouseRest() self.sub_rest_warehouse = QMdiSubWindow() self.sub_rest_warehouse.setWidget(self.rest_warehouse) self.mdi.addSubWindow(self.sub_rest_warehouse) self.sub_rest_warehouse.resize(self.rest_warehouse.size()) self.sub_rest_warehouse.show() def view_warehouse_material(self): self.material_warehouse = warehouse_material.Warehouse() self.sub_material_warehouse = QMdiSubWindow() self.sub_material_warehouse.setWidget(self.material_warehouse) self.mdi.addSubWindow(self.sub_material_warehouse) self.sub_material_warehouse.resize(self.material_warehouse.size()) self.sub_material_warehouse.show() def view_warehouse_accessories(self): self.accessories_warehouse = warehouse_accessories.Warehouse() self.sub_material_accessories = QMdiSubWindow() self.sub_material_accessories.setWidget(self.accessories_warehouse) self.mdi.addSubWindow(self.sub_material_accessories) self.sub_material_accessories.resize(self.accessories_warehouse.size()) self.sub_material_accessories.show() def view_warehouse_adjustments_material(self): self.adjustments_material = warehouse_adjustments.MaterialAdjustmentsList( ) self.sub_adjustments_material = QMdiSubWindow() self.sub_adjustments_material.setWidget(self.adjustments_material) self.mdi.addSubWindow(self.sub_adjustments_material) self.sub_adjustments_material.resize(self.adjustments_material.size()) self.sub_adjustments_material.show() def view_transaction_warehouse(self): self.transaction_warehouse = transaction_warehouse.TransactionWarehouse( ) self.sub_transaction_warehouse = QMdiSubWindow() self.sub_transaction_warehouse.setWidget(self.transaction_warehouse) self.mdi.addSubWindow(self.sub_transaction_warehouse) self.sub_transaction_warehouse.resize( self.transaction_warehouse.size()) self.sub_transaction_warehouse.show() def view_test_warehouse_material(self): self.test_warehouse_material = test_warehouse.TestWarehouseMaterial() self.sub_test_warehouse_material = QMdiSubWindow() self.sub_test_warehouse_material.setWidget( self.test_warehouse_material) self.mdi.addSubWindow(self.sub_test_warehouse_material) self.sub_test_warehouse_material.resize( self.test_warehouse_material.size()) self.sub_test_warehouse_material.show() def view_test_warehouse_accessories(self): self.test_warehouse_accessories = test_warehouse.TestWarehouseAccessories( ) self.sub_test_warehouse_accessories = QMdiSubWindow() self.sub_test_warehouse_accessories.setWidget( self.test_warehouse_accessories) self.mdi.addSubWindow(self.sub_test_warehouse_accessories) self.sub_test_warehouse_accessories.resize( self.test_warehouse_accessories.size()) self.sub_test_warehouse_accessories.show() def view_test_fast_warehouse(self): self.test_fast_warehouse = test_warehouse.TestFastWarehouse() self.sub_test_fast_warehouse = QMdiSubWindow() self.sub_test_fast_warehouse.setWidget(self.test_fast_warehouse) self.mdi.addSubWindow(self.sub_test_fast_warehouse) self.sub_test_fast_warehouse.resize(self.test_fast_warehouse.size()) self.sub_test_fast_warehouse.show() def view_beika(self): self.beika = beika.BeikaList() self.sub_beika = QMdiSubWindow() self.sub_beika.setWidget(self.beika) self.mdi.addSubWindow(self.sub_beika) self.sub_beika.resize(self.beika.size()) self.sub_beika.show() def view_supply_material(self): self.supply_material = supply_material.MaterialSupplyList() self.sub_supply_material = QMdiSubWindow() self.sub_supply_material.setWidget(self.supply_material) self.mdi.addSubWindow(self.sub_supply_material) self.sub_supply_material.resize(self.supply_material.size()) self.sub_supply_material.show() def view_supply_accessories(self): self.supply_accessories = supply_accessories.AccessoriesSupplyList() self.sub_supply_accessories = QMdiSubWindow() self.sub_supply_accessories.setWidget(self.supply_accessories) self.mdi.addSubWindow(self.sub_supply_accessories) self.sub_supply_accessories.resize(self.supply_accessories.size()) self.sub_supply_accessories.show() def view_scan_pack(self): self.scan_pack = scan_pack.ScanPack() self.sub_scan_pack = QMdiSubWindow() self.sub_scan_pack.setWidget(self.scan_pack) self.mdi.addSubWindow(self.sub_scan_pack) self.sub_scan_pack.resize(self.scan_pack.size()) self.sub_scan_pack.show() def view_settings_access(self): self.settings_access = settings_access.Access() self.sub_settings_access = QMdiSubWindow() self.sub_settings_access.setWidget(self.settings_access) self.mdi.addSubWindow(self.sub_settings_access) self.sub_settings_access.resize(self.settings_access.size()) self.sub_settings_access.show() def view_report_need_article_order(self): self.report_need_article = report_order.NeedArticleOrder() self.sub_report_need_article = QMdiSubWindow() self.sub_report_need_article.setWidget(self.report_need_article) self.mdi.addSubWindow(self.sub_report_need_article) self.sub_report_need_article.resize(self.report_need_article.size()) self.sub_report_need_article.show() def view_report_supply(self): self.report_supply = report_supply.ReportSupply() self.sub_report_supply = QMdiSubWindow() self.sub_report_supply.setWidget(self.report_supply) self.mdi.addSubWindow(self.sub_report_supply) self.sub_report_supply.resize(self.report_supply.size()) self.sub_report_supply.show() def view_report_cost_article(self): self.report_cost_article = report_cost_article.ReportCostArticle() self.sub_report_cost_article = QMdiSubWindow() self.sub_report_cost_article.setWidget(self.report_cost_article) self.mdi.addSubWindow(self.sub_report_cost_article) self.sub_report_cost_article.resize(self.report_cost_article.size()) self.sub_report_cost_article.show() def view_report_sibestoimost(self): self.report_sibest = report_sibestoimost.ReportSibestoimost() self.sub_report_sibest = QMdiSubWindow() self.sub_report_sibest.setWidget(self.report_sibest) self.mdi.addSubWindow(self.sub_report_sibest) self.sub_report_sibest.resize(self.report_sibest.size()) self.sub_report_sibest.show() def view_report_rest_for_work(self): self.report_rest_work = report_rest_work.ReportRestWork() self.sub_report_rest_work = QMdiSubWindow() self.sub_report_rest_work.setWidget(self.report_rest_work) self.mdi.addSubWindow(self.sub_report_rest_work) self.sub_report_rest_work.resize(self.report_rest_work.size()) self.sub_report_rest_work.show() def view_report_pack_accept(self): self.report_pack_accept = report_accept_pack.ReportAcceptPack() self.sub_report_pack_accept = QMdiSubWindow() self.sub_report_pack_accept.setWidget(self.report_pack_accept) self.mdi.addSubWindow(self.sub_report_pack_accept) self.sub_report_pack_accept.resize(self.report_pack_accept.size()) self.sub_report_pack_accept.show() def view_report_material_consumption(self): self.report_material_consumption = report_material_consumption.ReportMaterialConsumption( ) self.sub_report_material_consumption = QMdiSubWindow() self.sub_report_material_consumption.setWidget( self.report_material_consumption) self.mdi.addSubWindow(self.sub_report_material_consumption) self.sub_report_material_consumption.resize( self.report_material_consumption.size()) self.sub_report_material_consumption.show() def view_report_profit(self): self.report_profit = report_profit.ReportProfit() self.sub_report_profit = QMdiSubWindow() self.sub_report_profit.setWidget(self.report_profit) self.mdi.addSubWindow(self.sub_report_profit) self.sub_report_profit.resize(self.report_profit.size()) self.sub_report_profit.show() def view_report_performance_company(self): self.report_performance_company = report_performance_company.ReportPerformanceCompany( ) self.sub_report_performance_company = QMdiSubWindow() self.sub_report_performance_company.setWidget( self.report_performance_company) self.mdi.addSubWindow(self.sub_report_performance_company) self.sub_report_performance_company.resize( self.report_performance_company.size()) self.sub_report_performance_company.show() def view_report_shipped_customer(self): self.report_shipped_customer = report_shipped_to_customer.ReportShippedCustomer( ) self.sub_report_shipped_customer = QMdiSubWindow() self.sub_report_shipped_customer.setWidget( self.report_shipped_customer) self.mdi.addSubWindow(self.sub_report_shipped_customer) self.sub_report_shipped_customer.resize( self.report_shipped_customer.size()) self.sub_report_shipped_customer.show() def view_report_warehouse_balance_date(self): self.report_warehouse_balance_date = report_warehouse_balance_date.ReportWarehouseBalanceDate( ) self.sub_report_warehouse_balance_date = QMdiSubWindow() self.sub_report_warehouse_balance_date.setWidget( self.report_warehouse_balance_date) self.mdi.addSubWindow(self.sub_report_warehouse_balance_date) self.sub_report_warehouse_balance_date.resize( self.report_warehouse_balance_date.size()) self.sub_report_warehouse_balance_date.show() def view_report_reject(self): self.report_reject = report_reject.ReportReject() self.sub_report_reject = QMdiSubWindow() self.sub_report_reject.setWidget(self.report_reject) self.mdi.addSubWindow(self.sub_report_reject) self.sub_report_reject.resize(self.report_reject.size()) self.sub_report_reject.show() def view_report_all(self): self.report_all = report_all.ReportAll() self.sub_view_report_all = QMdiSubWindow() self.sub_view_report_all.setWidget(self.report_all) self.mdi.addSubWindow(self.sub_view_report_all) self.sub_view_report_all.resize(self.report_all.size()) self.sub_view_report_all.show() def view_report_nalog(self): self.report_nalog = report_nalog.ReportNalog() self.sub_report_nalog = QMdiSubWindow() self.sub_report_nalog.setWidget(self.report_nalog) self.mdi.addSubWindow(self.sub_report_nalog) self.sub_report_nalog.resize(self.report_nalog.size()) self.sub_report_nalog.show() def view_report_article_day(self): self.report_article_day = report_article_day.ReportArticleDay() self.sub_report_article_day = QMdiSubWindow() self.sub_report_article_day.setWidget(self.report_article_day) self.mdi.addSubWindow(self.sub_report_article_day) self.sub_report_article_day.resize(self.report_article_day.size()) self.sub_report_article_day.show() def view_material_in_pack(self): self.material_in_pack = material_in_pack.MaterialInPack() self.sub_material_in_pack = QMdiSubWindow() self.sub_material_in_pack.setWidget(self.material_in_pack) self.mdi.addSubWindow(self.sub_material_in_pack) self.sub_material_in_pack.resize(self.material_in_pack.size()) self.sub_material_in_pack.show() def view_shipment_order(self): self.shipment_order = shipment_order.ShipmentOrder() self.sub_shipment_order = QMdiSubWindow() self.sub_shipment_order.setWidget(self.shipment_order) self.mdi.addSubWindow(self.sub_shipment_order) self.sub_shipment_order.resize(self.shipment_order.size()) self.sub_shipment_order.show() def view_test_window(self): self.test_window = test_window.TestWindow() self.sub_test_window = QMdiSubWindow() self.sub_test_window.setWidget(self.test_window) self.mdi.addSubWindow(self.sub_test_window) self.sub_test_window.resize(self.test_window.size()) self.sub_test_window.show() def login_access(self): self.logger.info(u"[Пользователь {:04d}] {}".format( User().id(), "Зашел в программу")) self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name()) self.setEnabled(True) self.setFocus() self.access() def admin_login(self): self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name()) self.setEnabled(True) self.setFocus() self.access() def beika_no_finished(self): query = """SELECT COUNT(*) FROM beika WHERE Finished = 0""" sql_info = my_sql.sql_select(query) if "mysql.connector.errors" in str(type(sql_info)): beika_txt = "error sql" else: beika_txt = "Не зкарыто бейки: " + str(sql_info[0][0]) beika = QLabel(beika_txt) self.statusBar().addPermanentWidget(beika) def closeEvent(self, e): try: self.logger.info(u"[Пользователь {:04d}] {}".format( User().id(), "Вышел из программы")) except: print("Нет логина") e.accept() self.close() self.destroy() sys.exit() def arg_FS(self): self.setWindowState(Qt.WindowMaximized)
def WindowTrig(self, p): #====================================================================================================================================================================== #Factory Window #print("Eleccion " + p.text()) if p.text() == "Factory": sub = QMdiSubWindow() widget = QWidget() sub.resize(400, 400) self.layoutFactory = QVBoxLayout(widget) self.layoutImagenes = QHBoxLayout() self.layoutImagenes.addStretch(1) labelTitulo = QLabel() labelTitulo.setText("Selecciona el carro") self.comboTipo = QComboBox() self.comboTipo.addItem("Nissan") self.comboTipo.addItem("Chevrolet") buttonCreate = QPushButton('Crear') buttonCreate.clicked.connect(self.button_factory_crear) self.layoutFactory.addWidget(labelTitulo) self.layoutFactory.addWidget(self.comboTipo) self.layoutFactory.addWidget(buttonCreate) self.layoutFactory.addLayout(self.layoutImagenes) sub.setWidget(widget) sub.setWindowTitle("Patrón Factory") self.mdi.addSubWindow(sub) sub.show() #====================================================================================================================================================================== #Abstract Factory Window if p.text() == "AbstractFactory": subAbstractFactory = QMdiSubWindow() subAbstractFactory.resize(575, 443) widgetAbstractFactory = QWidget() self.gridAbstractLayout = QGridLayout(widgetAbstractFactory) self.gridAbstractLayout.setContentsMargins(0, 0, 0, 0) self.gridAbstractLayout.setObjectName("layoutAbstractFactory") labelFabricante = QLabel() labelFabricante.setText("Fabricante") self.gridAbstractLayout.addWidget(labelFabricante, 0, 0, 1, 1) labelTipo = QLabel() labelTipo.setText("Tipo") self.gridAbstractLayout.addWidget(labelTipo, 1, 0, 1, 1) self.comboFabricante = QComboBox() self.comboFabricante.addItem("Samsung") self.comboFabricante.addItem("Apple") self.gridAbstractLayout.addWidget(self.comboFabricante, 0, 1, 1, 1) self.comboTipo = QComboBox() self.comboTipo.addItem("Telefono") self.comboTipo.addItem("Tablet") self.gridAbstractLayout.addWidget(self.comboTipo, 1, 1, 1, 1) buttonCreate = QPushButton('Crear') buttonCreate.clicked.connect(self.button_abstractfactory_crear) self.gridAbstractLayout.addWidget(buttonCreate, 2, 1, 1, 1) subAbstractFactory.setWidget(widgetAbstractFactory) subAbstractFactory.setWindowTitle("Patrón Abstract Factory") self.mdi.addSubWindow(subAbstractFactory) subAbstractFactory.show() #====================================================================================================================================================================== #Bridge Window if p.text().lower() == "bridge": subBridge = QMdiSubWindow() subBridge.resize(575, 443) widgetBridge = QWidget() self.gridLayout = QGridLayout(widgetBridge) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("layoutBridge") labelTitulo = QLabel() labelTitulo.setText("Selecciona la figura") self.gridLayout.addWidget(labelTitulo, 0, 0, 1, 1) labelColor = QLabel() labelColor.setText("Selecciona el color") self.gridLayout.addWidget(labelColor, 1, 0, 1, 1) self.comboForma = QComboBox() self.comboForma.addItem("Cubo") self.comboForma.addItem("Esfera") self.gridLayout.addWidget(self.comboForma, 0, 1, 1, 1) self.comboColor = QComboBox() self.comboColor.addItem("Amarillo") self.comboColor.addItem("Azul") self.gridLayout.addWidget(self.comboColor, 1, 1, 1, 1) buttonDraw = QPushButton('Dibujar') buttonDraw.clicked.connect(self.button_bridge) self.gridLayout.addWidget(buttonDraw, 2, 1, 1, 1) subBridge.setWidget(widgetBridge) subBridge.setWindowTitle("Patrón Bridge") self.mdi.addSubWindow(subBridge) subBridge.show() #====================================================================================================================================================================== #Command Window if p.text() == "Command": subCommand = QMdiSubWindow() subCommand.resize(350, 350) widgetCommand = QWidget() self.layoutCommand = QGridLayout(widgetCommand) self.layoutCommand.setContentsMargins(0, 0, 0, 0) self.layoutCommand.setObjectName("gridCommand") labelTitle = QLabel() labelTitle.setText("Laptop") self.layoutCommand.addWidget(labelTitle, 0, 0, 1, 1) labelAccion = QLabel() labelAccion.setText("Elije un comando") self.layoutCommand.addWidget(labelAccion, 1, 0, 1, 1) self.encenderradio = QRadioButton('Encender') self.encenderradio.setChecked(False) self.encenderradio.accion = "Encender" self.encenderradio.toggled.connect(self.onClickedAccion) self.layoutCommand.addWidget(self.encenderradio, 1, 1, 1, 1) self.suspenderradio = QRadioButton('Suspender') self.suspenderradio.setChecked(False) self.suspenderradio.accion = "Suspender" self.suspenderradio.toggled.connect(self.onClickedAccion) self.layoutCommand.addWidget(self.suspenderradio, 2, 1, 1, 1) self.apagarradio = QRadioButton('Apagar') self.apagarradio.setChecked(False) self.apagarradio.accion = "Apagar" self.apagarradio.toggled.connect(self.onClickedAccion) self.layoutCommand.addWidget(self.apagarradio, 3, 1, 1, 1) self.reiniciarradio = QRadioButton('Reiniciar') self.reiniciarradio.setChecked(False) self.reiniciarradio.accion = "Reiniciar" self.reiniciarradio.toggled.connect(self.onClickedAccion) self.layoutCommand.addWidget(self.reiniciarradio, 4, 1, 1, 1) self.labelMensaje = QLabel() self.labelMensaje.setText("MSJ: ") self.layoutCommand.addWidget(self.labelMensaje, 4, 0, 1, 1) subCommand.setWidget(widgetCommand) subCommand.setWindowTitle("Patrón Command") self.mdi.addSubWindow(subCommand) subCommand.show() #===================================================================================================================================================================== #State Window if p.text() == "State": subState = QMdiSubWindow() subState.resize(450, 450) widgetState = QWidget() self.layoutState = QGridLayout(widgetState) self.layoutState.setContentsMargins(0, 0, 0, 0) self.layoutState.setObjectName("gridState") labelAgua = QLabel() labelAgua.setText("Agua") self.layoutState.addWidget(labelAgua, 1, 0, 1, 1) self.solidoradio = QRadioButton('Solido') self.solidoradio.setChecked(False) self.solidoradio.estado = "Solido" self.solidoradio.toggled.connect(self.onClickedEstado) self.layoutState.addWidget(self.solidoradio, 1, 1, 1, 1) self.liquidoradio = QRadioButton('Liquido') self.liquidoradio.setChecked(False) self.liquidoradio.estado = "Liquido" self.liquidoradio.toggled.connect(self.onClickedEstado) self.layoutState.addWidget(self.liquidoradio, 2, 1, 1, 1) self.gaseosoradio = QRadioButton('Gaseoso') self.gaseosoradio.setChecked(False) self.gaseosoradio.estado = "Gaseoso" self.gaseosoradio.toggled.connect(self.onClickedEstado) self.layoutState.addWidget(self.gaseosoradio, 3, 1, 1, 1) self.labelMensaje = QLabel() self.labelMensaje.setText("MSJ: ") self.layoutState.addWidget(self.labelMensaje, 4, 0, 1, 1) subState.setWidget(widgetState) subState.setWindowTitle("Patrón State") self.mdi.addSubWindow(subState) subState.show() #===================================================================================================================================================================== #Prototype Window if p.text() == "Prototype": subPrototype = QMdiSubWindow() subPrototype.resize(575, 443) widgetPrototype = QWidget() self.gridPrototypeLayout = QGridLayout(widgetPrototype) self.gridPrototypeLayout.setContentsMargins(0, 0, 0, 0) self.gridPrototypeLayout.setObjectName("layoutPrototype") labelMouse = QLabel() labelMouse.setText("Mouse") self.gridPrototypeLayout.addWidget(labelMouse, 0, 0, 1, 1) self.comboMouse = QComboBox() self.comboMouse.addItem("Alambrico") self.comboMouse.addItem("Inalambrico") self.gridPrototypeLayout.addWidget(self.comboMouse, 0, 1, 1, 1) buttonCreate = QPushButton('Crear') buttonCreate.clicked.connect(self.button_prototype_crear) self.gridPrototypeLayout.addWidget(buttonCreate, 2, 1, 1, 1) buttonClone = QPushButton('Clonar') buttonClone.clicked.connect(self.button_prototype_clonar) self.gridPrototypeLayout.addWidget(buttonClone, 3, 1, 1, 1) subPrototype.setWidget(widgetPrototype) subPrototype.setWindowTitle("Patrón Prototype") self.mdi.addSubWindow(subPrototype) subPrototype.show() #===================================================================================================================================================================== #Decorator Window if p.text() == "Decorator": subDecorator = QMdiSubWindow() subDecorator.resize(575, 443) widgetDecorator = QWidget() self.gridDecoratorLayout = QGridLayout(widgetDecorator) self.gridDecoratorLayout.setContentsMargins(0, 0, 0, 0) self.gridDecoratorLayout.setObjectName("layoutDecorator") labelCondimentos = QLabel() labelCondimentos.setText("Elije un condimento") self.gridDecoratorLayout.addWidget(labelCondimentos, 0, 0, 1, 1) self.comboCondimentos = QComboBox() self.comboCondimentos.addItem("Cueritos") self.comboCondimentos.addItem("Jicama") self.comboCondimentos.addItem("Pepino") self.comboCondimentos.addItem("Mango") self.comboCondimentos.addItem("Cacahuate") self.comboCondimentos.addItem("DulcesTamarindo") self.comboCondimentos.addItem("Chamoy") self.comboCondimentos.addItem("Salsa") self.comboCondimentos.addItem("Limon") self.gridDecoratorLayout.addWidget(self.comboCondimentos, 0, 1, 1, 1) buttonAdd = QPushButton('Agregar') buttonAdd.clicked.connect(self.button_decorator_agregar) self.gridDecoratorLayout.addWidget(buttonAdd, 2, 1, 1, 1) subDecorator.setWidget(widgetDecorator) subDecorator.setWindowTitle("Patrón Decorator") self.mdi.addSubWindow(subDecorator) subDecorator.show()
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent=parent) Ui_MainWindow.__init__(self) self.setupUi(self) #area exclusiva para a imagem self.R = [] self.G = [] self.B = [] self.R_noise = [] self.G_noise = [] self.B_noise = [] self.R_envio = [] self.G_envio = [] self.B_envio = [] self.R_envio_noise = [] self.G_envio_noise = [] self.B_envio_noise = [] #criando o label da imagem self.labelIMAGE = QLabel() self.labelIMAGE.setBackgroundRole(QPalette.Base) self.labelIMAGE.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.labelIMAGE.setScaledContents(True) #criando uma area para por o label e configurar sua escala self.scrollAreaIMAGE = QScrollArea() self.scrollAreaIMAGE.setBackgroundRole(QPalette.Dark) self.scrollAreaIMAGE.setWidget(self.labelIMAGE) self.scrollAreaIMAGE.setVisible(False) #self.mdi = QMdiArea() self.sub = QMdiSubWindow() self.sub.setWidget(self.scrollAreaIMAGE) self.sub.resize(400,400) self.sub.setWindowTitle("Image Viewer") self.mdiArea.addSubWindow(self.sub) #criando menus para imagem self.createActions() self.createMenus() #deixando menu grafico indisponivel self.fileMenu.setEnabled(False) self.viewMenu.setEnabled(False) self.x = [] self.y = [] self.x_bin = [] self.y_bin = [] self.x_noise = [] self.y_noise = [] self.binario = [] self.binario_noise = [] self.listaPortas = [] #variaveis para a resolucao da tela self.width = 1080 self.height = 950 self.height_main = 500 self.controle = False #variavel que controla a exclusao do grafico self.controleReceive = False self.controleSend = False self.timer = QTimer(self) self.actions() self.incializationMain() self.createGraph() #caso escolha a opcao ASCII self.pushButton1.clicked.connect(self.optionASCII) self.pushButton2.clicked.connect(self.optionIMAGE) self.pushButton6.clicked.connect(self.browseASCII) self.pushButton7.clicked.connect(self.lerEntrada) self.pushButton8.clicked.connect(self.lerEntradaRecebida) self.pushButton10.clicked.connect(self.lerEntradaIMG) self.pushButton11.clicked.connect(self.lerEntradaRecebidaIMG) self.pushButtonCRC.clicked.connect(self.verificaCRC_ASCII) self.pushButtonCRC_IMG.clicked.connect(self.verificaCRC_IMG) #fixando o tamanho da janela inicial self.resize(self.width, self.height_main) self.events() self.timer.setInterval(300) self.timer.start() def events(self): self.timer.timeout.connect(self.update) def selectSerialPort(self): #deixando menu de opcoes disponiveis self.label1.setEnabled(not False) self.label1.setText("Select an Option to Emissor or Receptor") self.pushButton1.setEnabled(not False) self.pushButton2.setEnabled(not False) self.pushButton3.setEnabled(False) def unselectSerialPort(self): return def recebePortasSeriais(self): self.listaPortas = serialPorts() def activateMain(self): #deixando desativado self.checkBoxASCII.setChecked(False) self.checkBoxIMAGE.setChecked(False) #limpando comboBox self.comboBox2.clear() self.comboBox2.addItem("Selecione") self.comboBox2.addItem("Entrada em Texto") self.comboBox2.addItem("Entrada em Arquivo") #limpando coisas digitadas self.lineEdit1.clear() self.label2.clear() self.labelIMAGE.clear() self.x = [] self.y = [] self.R = [] self.G = [] self.B = [] self.R_envio = [] self.G_envio = [] self.B_envio = [] self.R_envio_noise = [] self.G_envio_noise = [] self.B_envio_noise = [] self.texto = [] self.binario = [] #deixando menu grafico indisponivel self.visualizar_grafico.setEnabled(False) self.fileMenu.setEnabled(False) self.viewMenu.setEnabled(False) #variavel de controle para a func atualizaOpcoesASCII self.controleSend = False self.controleReceive = False #voltando a habilitar serial e apagando menu self.select.setEnabled(not False) self.select.clear() self.select.removeAction(self.serialPort) #fixando o tamanho da janela inicial self.resize(self.width, self.height_main) #colocando opcoes do menu principal visiveis self.label1.setText("Select an Option to Emissor or Receptor") self.label1.setHidden(False) self.pushButton1.setHidden(False) self.pushButton2.setHidden(False) self.pushButton3.setHidden(False) #deixando menu de opcoes indisponiveis ate ser escolhida a porta serial self.pushButton1.setEnabled(False) self.pushButton2.setEnabled(False) self.pushButton3.setEnabled(False) #ocultando itens que nao pertencem ao menu principal self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.pushButton10.setHidden(not False) self.pushButton11.setHidden(not False) self.label2.setHidden(not False) self.label2.setStyleSheet('color: black') self.lineEdit1.setHidden(not False) self.comboBox1.setHidden(not False) self.comboBox2.setHidden(not False) self.pushButton6.setHidden(not False) self.pushButton7.setHidden(not False) self.pushButton8.setHidden(not False) self.checkBox6.setHidden(not False) self.checkBox1.setHidden(not False) self.scrollArea1.setHidden(not False) self.mdiArea.setHidden(not False) self.labelPORCENTAGEM.setHidden(not False) self.spinBoxPORCENTAGEM.setHidden(not False) self.labelRGB.setHidden(not False) self.radioButtonR.setHidden(not False) self.radioButtonG.setHidden(not False) self.radioButtonB.setHidden(not False) self.pushButtonCRC.setHidden(not False) self.pushButtonCRC_IMG.setHidden(not False) self.pushButtonCRC.setEnabled(False) self.pushButtonCRC_IMG.setEnabled(False) self.labelDeteccao1.setHidden(not False) self.labelDeteccao2.setHidden(not False) self.label5.setHidden(not False) self.label6.setHidden(not False) self.label7.setHidden(not False) self.label8.setHidden(not False) self.label9.setHidden(not False) self.label10.setHidden(not False) self.label11.setHidden(not False) self.label12.setHidden(not False) self.spinBox1.setHidden(not False) self.comboBox3.setHidden(not False) self.comboBox4.setHidden(not False) self.radioButton1.setHidden(not False) self.radioButton2.setHidden(not False) self.checkBox2.setHidden(not False) self.checkBox3.setHidden(not False) self.checkBox4.setHidden(not False) self.checkBox5.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.checkBoxASCII.setHidden(not False) self.horizontalSlider1.setHidden(not False) self.horizontalSlider2.setHidden(not False) #apagando grafico if (self.checkBox1.isChecked() and self.controle == True): #tirando a opcao de esta ativado self.checkBox1.setChecked(False) #apagando grafico caso esteja ativado self.graphLayout.removeWidget(self.canvas) sip.delete(self.canvas) self.canvas = None self.graphLayout.removeWidget(self.toolbar) sip.delete(self.toolbar) self.toolbar = None self.controle = False #recriando menu da porta serial self.select.addAction(self.serialPort) def functionViewsGraph(self): #deixando ativado self.checkBox1.setChecked(not False) self.horizontalSlider2.setHidden(False) def functionClearGraph(self): #tirando a opcao de esta ativado self.checkBox1.setChecked(False) self.horizontalSlider2.setHidden(not False) def functionViewPainel(self): self.label5.setHidden(False) self.label6.setHidden(False) self.label7.setHidden(False) self.label8.setHidden(False) self.label9.setHidden(False) self.label10.setHidden(False) self.label11.setHidden(False) self.label12.setHidden(False) self.spinBox1.setHidden(False) self.comboBox3.setHidden(False) self.comboBox4.setHidden(False) self.radioButton1.setHidden(False) self.radioButton2.setHidden(False) self.checkBox2.setHidden(False) self.checkBox3.setHidden(False) self.checkBox4.setHidden(False) if(self.controleReceive == False): self.checkBox5.setHidden(False) else: self.checkBox5.setHidden(not False) self.horizontalSlider1.setHidden(False) def functionClearPainel(self): self.label5.setHidden(not False) self.label6.setHidden(not False) self.label7.setHidden(not False) self.label8.setHidden(not False) self.label9.setHidden(not False) self.label11.setHidden(not False) self.label12.setHidden(not False) self.spinBox1.setHidden(not False) self.comboBox3.setHidden(not False) self.comboBox4.setHidden(not False) self.radioButton1.setHidden(not False) self.radioButton2.setHidden(not False) self.checkBox2.setHidden(not False) self.checkBox3.setHidden(not False) self.checkBox4.setHidden(not False) self.checkBox5.setHidden(not False) self.horizontalSlider1.setHidden(not False) @staticmethod def open_help(): Help().exec_() def actions(self): #carregando porta serial self.recebePortasSeriais() #print self.listaPortas if(len(self.listaPortas) > 0): self.serialPort = QAction("&"+self.listaPortas[0], self, triggered=self.selectSerialPort) else: self.serialPort = QAction("&no serial ports", self, triggered=self.unselectSerialPort) self.Main = QAction("&Main...", self, shortcut="Ctrl+M", triggered=self.activateMain) self.viewGraph = QAction("&View Graph", self, shortcut="Ctrl+G", triggered=self.functionViewsGraph) self.clearGraph = QAction("&Clear Graph", self, shortcut="Ctrl+K", triggered=self.functionClearGraph) self.viewPainel = QAction("&View customization panel", self, shortcut="Ctrl+P", triggered=self.functionViewPainel) self.clearPainel = QAction("&Clear customization panel", self, shortcut="Ctrl+L", triggered=self.functionClearPainel) self.instrucoes = QAction("&Uso do Software", self, shortcut="Ctrl+H", triggered=self.open_help) def incializationMain(self): #variavel de controle para a func atualizaOpcoesASCII self.controleSend = False self.controleReceive = False #ativando main #deixando menu de opcoes indisponiveis ate ser escolhida a porta serial self.pushButton1.setEnabled(False) self.pushButton2.setEnabled(False) self.pushButton3.setEnabled(False) #ocultando itens que nao pertencem ao menu principal self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.pushButton10.setHidden(not False) self.pushButton11.setHidden(not False) self.label2.setHidden(not False) self.lineEdit1.setHidden(not False) self.comboBox1.setHidden(not False) self.comboBox2.setHidden(not False) self.pushButton6.setHidden(not False) self.pushButton7.setHidden(not False) self.pushButton8.setHidden(not False) self.checkBox6.setHidden(not False) self.checkBox1.setHidden(not False) self.scrollArea1.setHidden(not False) self.mdiArea.setHidden(not False) self.labelPORCENTAGEM.setHidden(not False) self.spinBoxPORCENTAGEM.setHidden(not False) self.labelRGB.setHidden(not False) self.radioButtonR.setHidden(not False) self.radioButtonG.setHidden(not False) self.radioButtonB.setHidden(not False) self.pushButtonCRC.setHidden(not False) self.pushButtonCRC_IMG.setHidden(not False) self.pushButtonCRC.setEnabled(False) self.pushButtonCRC_IMG.setEnabled(False) self.labelDeteccao1.setHidden(not False) self.labelDeteccao2.setHidden(not False) self.label5.setHidden(not False) self.label6.setHidden(not False) self.label7.setHidden(not False) self.label8.setHidden(not False) self.label9.setHidden(not False) self.label10.setHidden(not False) self.label11.setHidden(not False) self.label12.setHidden(not False) self.spinBox1.setHidden(not False) self.comboBox3.setHidden(not False) self.comboBox4.setHidden(not False) self.radioButton1.setHidden(not False) self.radioButton2.setHidden(not False) self.checkBox2.setHidden(not False) self.checkBox3.setHidden(not False) self.checkBox4.setHidden(not False) self.checkBox5.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.checkBoxASCII.setHidden(not False) self.horizontalSlider1.setHidden(not False) self.horizontalSlider2.setHidden(not False) #criando menu da porta serial self.tools = QMenu("&Tools", self) self.menuBar().addMenu(self.tools) self.tools.addSeparator() self.select = self.tools.addMenu(" Select Serial Port ") self.select.addAction(self.serialPort) self.tools.addSeparator() self.visualizar_grafico = self.tools.addMenu(" Graph ") self.visualizar_grafico.addAction(self.viewGraph) self.visualizar_grafico.addSeparator() self.visualizar_grafico.addAction(self.clearGraph) self.visualizar_grafico.addSeparator() self.visualizar_grafico.addAction(self.viewPainel) self.visualizar_grafico.addSeparator() self.visualizar_grafico.addAction(self.clearPainel) #deixando menu grafico indisponivel self.visualizar_grafico.setEnabled(False) self.tools.addSeparator() self.returnMain = self.tools.addMenu(" Return Main ") self.returnMain.addAction(self.Main) self.tools.addSeparator() #criando menu help self.help = QMenu("&Help", self) self.menuBar().addMenu(self.help) self.help.addSeparator() self.selectHelp = self.help.addMenu(" Instrucoes de Uso ") self.selectHelp.addAction(self.instrucoes) self.help.addSeparator() def optionSendASCII(self): #deixando ativado ASCII e sativando Imagem self.checkBoxASCII.setChecked(not False) self.checkBoxIMAGE.setChecked(False) #variavel de controle para a func atualizaOpcoesASCII self.controleSend = True #ajustando janela self.resize(self.width, self.height_main) #ocultando menus que nao pertencem ao menu selecionado self.label1.setHidden(not False) self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.mdiArea.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.labelPORCENTAGEM.setHidden(not False) self.spinBoxPORCENTAGEM.setHidden(not False) self.labelRGB.setHidden(not False) self.radioButtonR.setHidden(not False) self.radioButtonG.setHidden(not False) self.radioButtonB.setHidden(not False) self.pushButton8.setHidden(not False) self.pushButton10.setHidden(not False) self.pushButton11.setHidden(not False) #mostrando itens pertencentes ao menu self.label2.setHidden(False) self.label10.setHidden(False) self.lineEdit1.setHidden(False) self.comboBox1.setHidden(False) self.comboBox2.setHidden(False) self.pushButton6.setHidden(False) self.pushButton7.setHidden(False) self.checkBox6.setHidden(False) self.checkBox1.setHidden(not False) self.scrollArea1.setHidden(False) def optionSendIMAGE(self): #deixando ativado Imagem e desativando ASCII self.checkBoxIMAGE.setChecked(not False) self.checkBoxASCII.setChecked(False) #deixando menu grafico disponivel self.fileMenu.setEnabled(not False) self.viewMenu.setEnabled(not False) #ajustando janela self.resize(self.width, self.height) #ocultando menus que nao pertencem ao menu selecionado self.label1.setHidden(not False) self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.lineEdit1.setHidden(not False) self.comboBox2.setHidden(not False) self.pushButton6.setHidden(not False) self.checkBox1.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.pushButton8.setHidden(not False) #mostrando itens pertencentes ao menu self.scrollArea1.setHidden(False) self.label2.setHidden(False) self.mdiArea.setHidden(False) self.label10.setHidden(False) self.comboBox1.setHidden(False) self.pushButton7.setHidden(not False) self.pushButton10.setHidden(False) self.pushButton11.setHidden(not False) self.checkBox6.setHidden(False) self.labelPORCENTAGEM.setHidden(False) self.spinBoxPORCENTAGEM.setHidden(False) self.labelRGB.setHidden(False) self.radioButtonR.setHidden(False) self.radioButtonG.setHidden(False) self.radioButtonB.setHidden(False) def optionReceiveASCII(self): #variavel de controle para a func atualizaOpcoesASCII self.controleReceive = True #ajustando janela self.resize(self.width, self.height_main) #ocultando menus que nao pertencem ao menu selecionado self.label1.setHidden(not False) self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.pushButton10.setHidden(not False) self.pushButton11.setHidden(not False) self.mdiArea.setHidden(not False) self.comboBox2.setHidden(not False) self.pushButton6.setHidden(not False) self.pushButton7.setHidden(not False) self.checkBox6.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.labelPORCENTAGEM.setHidden(not False) self.spinBoxPORCENTAGEM.setHidden(not False) self.labelRGB.setHidden(not False) self.radioButtonR.setHidden(not False) self.radioButtonG.setHidden(not False) self.radioButtonB.setHidden(not False) #mostrando itens pertencentes ao menu self.lineEdit1.setHidden(False) self.lineEdit1.setEnabled(False) self.label2.setHidden(False) self.scrollArea1.setHidden(False) self.label10.setHidden(False) self.comboBox1.setHidden(False) self.pushButton8.setHidden(False) self.checkBox1.setHidden(not False) self.pushButtonCRC.setHidden(False) self.pushButtonCRC_IMG.setHidden(not False) self.labelDeteccao1.setHidden(False) self.labelDeteccao2.setHidden(not False) def optionReceiveIMAGE(self): #deixando ativado Imagem e desativando ASCII self.checkBoxIMAGE.setChecked(not False) self.checkBoxASCII.setChecked(False) #deixando menu grafico disponivel self.fileMenu.setEnabled(not False) self.viewMenu.setEnabled(not False) #ajustando janela self.resize(self.width, self.height) #ocultando menus que nao pertencem ao menu selecionado self.label1.setHidden(not False) self.pushButton4.setHidden(not False) self.pushButton5.setHidden(not False) self.lineEdit1.setHidden(not False) self.comboBox2.setHidden(not False) self.pushButton6.setHidden(not False) self.checkBox1.setHidden(not False) self.checkBoxIMAGE.setHidden(not False) self.pushButton8.setHidden(not False) #mostrando itens pertencentes ao menu self.scrollArea1.setHidden(False) self.label2.setHidden(False) self.mdiArea.setHidden(False) self.label10.setHidden(False) self.comboBox1.setHidden(False) self.pushButton10.setHidden(not False) self.pushButton11.setHidden(False) self.pushButton8.setHidden(not False) self.checkBox6.setHidden(not False) self.labelPORCENTAGEM.setHidden(not False) self.spinBoxPORCENTAGEM.setHidden(not False) self.labelRGB.setHidden(not False) self.radioButtonR.setHidden(not False) self.radioButtonG.setHidden(not False) self.radioButtonB.setHidden(not False) self.pushButtonCRC_IMG.setHidden(False) self.pushButtonCRC.setHidden(not False) self.labelDeteccao1.setHidden(not False) self.labelDeteccao2.setHidden(False) def optionASCII(self): #por seguranca deixando menu da serial desabilitado self.select.setEnabled(False) #apagando Menu anterior self.pushButton1.setHidden(not False) self.pushButton2.setHidden(not False) self.pushButton3.setHidden(not False) #ativando opcoes do proximo menu self.label1.setText("Select an Option to Emissor or Receptor") self.pushButton4.setHidden(False) self.pushButton5.setHidden(False) #caso escolha uma das opcoes disponiveis self.pushButton4.clicked.connect(self.optionSendASCII) self.pushButton5.clicked.connect(self.optionReceiveASCII) def optionIMAGE(self): #por seguranca deixando menu da serial desabilitado self.select.setEnabled(False) #apagando Menu anterior self.pushButton1.setHidden(not False) self.pushButton2.setHidden(not False) self.pushButton3.setHidden(not False) #ativando opcoes do proximo menu self.label1.setText("Select an Option to Emissor or Receptor") self.pushButton4.setHidden(False) self.pushButton5.setHidden(False) #caso escolha uma das opcoes disponiveis self.pushButton4.clicked.connect(self.optionSendIMAGE) self.pushButton5.clicked.connect(self.optionReceiveIMAGE) def atualizaOpcoesASCII(self): if(self.controleSend == True): if(self.comboBox2.currentText() == "Selecione"): self.lineEdit1.setHidden(not False) self.label2.setHidden(not False) self.pushButton6.setHidden(not False) elif(self.comboBox2.currentText() == "Entrada em Texto"): self.lineEdit1.setEnabled(not False) self.lineEdit1.setHidden(False) self.label2.setHidden(False) self.pushButton6.setHidden(not False) elif(self.comboBox2.currentText() == "Entrada em Arquivo"): self.lineEdit1.setEnabled(False) self.lineEdit1.setHidden(False) self.label2.setHidden(False) self.pushButton6.setHidden(False) if(self.controleSend == True or self.controleReceive == True): #deixando menu grafico indisponivel self.visualizar_grafico.setEnabled(not False) def browseASCII(self): filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME')) with open(filename[0], 'r') as f: file_text = f.read() self.lineEdit1.setText(file_text) def printColor(self): if(self.comboBox4.currentText() == 'blue'): return 'b' if(self.comboBox4.currentText() == 'cian'): return 'c' elif(self.comboBox4.currentText() == 'yellow'): return 'y' elif(self.comboBox4.currentText() == 'pink'): return 'm' elif(self.comboBox4.currentText() == 'green'): return 'g' elif(self.comboBox4.currentText() == 'red'): return 'r' elif(self.comboBox4.currentText() == 'white'): return 'white' elif(self.comboBox4.currentText() == 'purple'): return 'purple' elif(self.comboBox4.currentText() == 'orange'): return 'orange' return 'white' def linesWidth(self): self.label9.setNum(self.horizontalSlider1.value()/20.) return self.horizontalSlider1.value()/20. def clearGrafico(self): self.graphLayout.removeWidget(self.canvas) sip.delete(self.canvas) self.canvas = None self.graphLayout.removeWidget(self.toolbar) sip.delete(self.toolbar) self.toolbar = None self.controle = False def createGraph(self): if self.checkBox1.isChecked(): self.figure = plt.figure() self.figure.subplots_adjust(left=0.070, bottom=0.085, right=0.99, top=0.97, hspace=0.13) self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar(self.canvas, self) self.graphLayout.addWidget(self.canvas) self.graphLayout.addWidget(self.toolbar) self.controle = True #apenas para teste do grafico def plot(self): self.figure.clear() if(len(self.x) > 0): #controle para imprimir a quantidade de bits desajado self.horizontalSlider2.setMaximum(100) value = (self.x[-1] - 19*self.spinBox1.value()/20)*self.horizontalSlider2.value()/99 start = value - self.spinBox1.value()/20 end = start + 21*self.spinBox1.value()/20 #nao deixando ultrapassar o numero maximo de bits para visualizacao if(self.spinBox1.value()+1 > len(self.y)): self.spinBox1.setValue(len(self.y)) else: if(self.checkBox4.isChecked() and self.checkBox5.isChecked()): self.ax = self.figure.add_subplot(313) elif(self.checkBox4.isChecked() or self.checkBox5.isChecked()): self.ax = self.figure.add_subplot(212) else: #primeiro grafico default self.ax = self.figure.add_subplot(111) #ajustando eixo de visualizacao self.ax.set_xlim(start, end) self.ax.step(self.x, self.y, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico self.ax.yaxis.set_major_locator(MaxNLocator(integer=True)) self.ax.xaxis.set_major_locator(MaxNLocator(integer=True)) self.ax.xaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax.xaxis.grid(self.checkBox3.isChecked()) self.ax.yaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax.yaxis.grid(self.checkBox2.isChecked()) self.ax.set_facecolor((39./256.,40./256.,34./256.)) self.figure.set_facecolor((39./256.,40./256.,34./256.)) color = "white" self.ax.set_ylabel(self.comboBox3.currentText(), color=color, size=15) self.ax.spines['bottom'].set_color(color) self.ax.spines['top'].set_color(color) self.ax.spines['left'].set_color(color) self.ax.spines['right'].set_color(color) for t in self.ax.xaxis.get_ticklines(): t.set_color(color) for t in self.ax.yaxis.get_ticklines(): t.set_color(color) for t in self.ax.xaxis.get_ticklines(): t.set_color(color) for t in self.ax.yaxis.get_ticklines(): t.set_color(color) for label in self.ax.get_yticklabels(): label.set_color(color) for label in self.ax.get_xticklabels(): label.set_color(color) #caso se deseje o grafico binario if self.checkBox4.isChecked(): if self.checkBox5.isChecked(): self.ax1 = self.figure.add_subplot(311) else: self.ax1 = self.figure.add_subplot(211) #ajustando eixo de visualizacao self.ax1.set_xlim(start, end) self.ax1.step(self.x_bin, self.y_bin, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico self.ax1.yaxis.set_major_locator(MaxNLocator(integer=True)) self.ax1.xaxis.set_major_locator(MaxNLocator(integer=True)) self.ax1.xaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax1.xaxis.grid(self.checkBox3.isChecked()) self.ax1.yaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax1.yaxis.grid(self.checkBox2.isChecked()) self.ax1.set_facecolor((39./256.,40./256.,34./256.)) self.figure.set_facecolor((39./256.,40./256.,34./256.)) color = "white" self.ax1.set_ylabel("Binario", color=color, size=15) self.ax1.spines['bottom'].set_color(color) self.ax1.spines['top'].set_color(color) self.ax1.spines['left'].set_color(color) self.ax1.spines['right'].set_color(color) for t in self.ax1.xaxis.get_ticklines(): t.set_color(color) for t in self.ax1.yaxis.get_ticklines(): t.set_color(color) for t in self.ax1.xaxis.get_ticklines(): t.set_color(color) for t in self.ax1.yaxis.get_ticklines(): t.set_color(color) for label in self.ax1.get_yticklabels(): label.set_color(color) for label in self.ax1.get_xticklabels(): label.set_color(color) #ocultando valores do eixo x self.ax1.set_xticklabels([]) #caso se deseje o grafico do ruido if self.checkBox5.isChecked(): if self.checkBox4.isChecked(): self.ax2 = self.figure.add_subplot(312) else: self.ax2 = self.figure.add_subplot(211) #ajustando eixo de visualizacao self.ax2.set_xlim(start, end) self.ax2.step(self.x_noise, self.y_noise, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico self.ax2.yaxis.set_major_locator(MaxNLocator(integer=True)) self.ax2.xaxis.set_major_locator(MaxNLocator(integer=True)) self.ax2.xaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax2.xaxis.grid(self.checkBox3.isChecked()) self.ax2.yaxis.grid(color='gray', linestyle='--', linewidth=0.5) self.ax2.yaxis.grid(self.checkBox2.isChecked()) self.ax2.set_facecolor((39./256.,40./256.,34./256.)) self.figure.set_facecolor((39./256.,40./256.,34./256.)) color = "white" self.ax2.set_ylabel("Ruido", color=color, size=15) self.ax2.spines['bottom'].set_color(color) self.ax2.spines['top'].set_color(color) self.ax2.spines['left'].set_color(color) self.ax2.spines['right'].set_color(color) for t in self.ax2.xaxis.get_ticklines(): t.set_color(color) for t in self.ax2.yaxis.get_ticklines(): t.set_color(color) for t in self.ax2.xaxis.get_ticklines(): t.set_color(color) for t in self.ax2.yaxis.get_ticklines(): t.set_color(color) for label in self.ax2.get_yticklabels(): label.set_color(color) for label in self.ax2.get_xticklabels(): label.set_color(color) #ocultando valores do eixo x self.ax2.set_xticklabels([]) self.canvas.draw() else: return #faz o controle tanto das opcoes quanto do tamanho da tela quando o grafico for solicitado def checkBoxGraph(self): if (self.checkBox1.isChecked() and self.controle == False): self.createGraph() #ativa caixa do grafico self.plot() #fixando o tamanho da janela inicial self.resize(self.width, self.height) elif (not(self.checkBox1.isChecked()) and self.controle == True): self.clearGrafico() #fixando o tamanho da janela inicial if (self.checkBoxIMAGE.isChecked()): self.resize(self.width, self.height) else: self.resize(self.width, self.height_main) def update(self): if(self.comboBox3.currentText() == 'NRZ'): self.plot_NRZ() if(self.comboBox3.currentText() == 'NRZ-L'): self.plot_NRZ_L() if(self.comboBox3.currentText() == 'NRZ-I'): self.plot_NRZ_I() if self.controle == True: self.plot() self.checkBoxGraph() self.gravaMensagem() self.actions() if (self.checkBoxASCII.isChecked()): self.atualizaOpcoesASCII() if (self.checkBoxIMAGE.isChecked()): self.convertIMAGE_to_Binary_in_label() if (self.lineEdit1.text() != ""): self.pushButtonCRC.setEnabled(not False) if (self.label2.text() != ""): self.pushButtonCRC_IMG.setEnabled(not False) def gravaMensagem(self): global texto if(self.lineEdit1.text() != ""): texto = self._hex_to_binary(self._word_to_hex(self.lineEdit1.text())) self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista if(len(self.binario) != len(self.binario_noise)): self.lista_ASCII_error = [i for i in self.lineEdit1.text()] #print self.lista_ASCII_error self.noise_ASCII(10) texto = self._hex_to_binary(self._word_to_hex(self.lista_ASCII_error)) self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista #print self.binario_noise #print self.binario self.label2.setText(texto) def ASCII_to_Bin(self, texto): return bin(int(binascii.hexlify(texto), 16)) def plot_NRZ(self): self.radioButton1.setHidden(not False) self.radioButton2.setHidden(not False) #oculta opcao do bit anterior #valores para grafico if((self.lineEdit1.text() != "" and len(self.binario) > 0) or (self.checkBoxIMAGE.isChecked() and len(self.binario) > 0)) : self.y = [int(i) for i in self.binario] self.y = [self.y[0]] + self.y self.x = [ int(i) for i in range(len(self.y)) ] self.y_bin = [int(i) for i in self.binario] self.y_bin = [self.y_bin[0]] + self.y_bin self.x_bin = [ int(i) for i in range(len(self.y_bin)) ] if(len(self.binario_noise) > 0): self.y_noise = [int(i) for i in self.binario_noise] self.y_noise = [self.y_noise[0]] + self.y_noise self.x_noise = [ int(i) for i in range(len(self.y_noise))] def plot_NRZ_L(self): #valores para grafico self.plot_NRZ() for i in range(len(self.y)): if(self.y[i] == 0): self.y[i] = 1 elif(self.y[i] == 1): self.y[i] = -1 self.x = [ i for i in range(len(self.y)) ] def plot_NRZ_I_1(self): self.plot_NRZ() self.radioButton1.setHidden(not True) self.radioButton2.setHidden(not True) for i in range(1,len(self.y)): if(self.y[i] == 1): if(self.y[i-1] == 0): self.y[i] = 1 else: self.y[i] = 0 else: self.y[i] = self.y[i-1] for i in range(len(self.y)): if(self.y[i] == 0): self.y[i] = -1 def plot_NRZ_I(self): self.radioButton1.setHidden(not True) self.radioButton2.setHidden(not True) if(self.radioButton1.isChecked()): self.plot_NRZ_I_1() if(self.radioButton2.isChecked()): self.plot_NRZ_I_1() for i in range(len(self.y)): if(self.y[i] == 1): self.y[i] = -1 else: self.y[i] = 1 @staticmethod def return_bin(value): #dado um int bin eh retornado uma lista dos valores return [int(i) for i in value] @staticmethod def _word_to_hex(word): values = '' for letter in word: values += '{:2x}'.format(ord(letter)) return values @staticmethod def _hex_to_binary(hex_): try: values = "" for hex_char in hex_: values += "{:0=4b}".format(int(hex_char, 16)) except ValueError: return None return values #funcoes apenas para a visualizacao da imagem def zoomIn(self): self.scaleImage(1.25) def zoomOut(self): self.scaleImage(0.8) def normalSize(self): self.labelIMAGE.adjustSize() self.scaleFactor = 1.0 def fitToWindow(self): fitToWindow = self.fitToWindowAct.isChecked() self.scrollAreaIMAGE.setWidgetResizable(fitToWindow) if not fitToWindow: self.normalSize() self.updateActions() def open(self): #limpando tela self.label2.clear() self.labelIMAGE.clear() self.x = [] self.y = [] self.x_bin = [] self.y_bin = [] self.R = [] self.G = [] self.B = [] self.R_envio = [] self.G_envio = [] self.B_envio = [] self.texto = [] self.x_noise = [] self.y_noise = [] self.binario = [] self.binario_noise = [] self.R_noise = [] self.G_noise = [] self.B_noise = [] self.R_envio_noise = [] self.G_envio_noise = [] self.B_envio_noise = [] if (self.checkBoxIMAGE.isChecked()): options = QFileDialog.Options() # fileName = QFileDialog.getOpenFileName(self, "Open File", QDir.currentPath()) fileName, _ = QFileDialog.getOpenFileName(self, 'QFileDialog.getOpenFileName()', '','Images (*.png *.jpeg *.jpg *.bmp *.gif)', options=options) if(fileName != ' '): image = QImage(fileName) if image.isNull(): QMessageBox.information(self, "Image Viewer", "Cannot load %s." % fileName) return self.labelIMAGE.setPixmap(QPixmap.fromImage(image)) self.scaleFactor = 1.0 self.scrollAreaIMAGE.setVisible(True) self.fitToWindowAct.setEnabled(True) self.updateActions() if not self.fitToWindowAct.isChecked(): self.labelIMAGE.adjustSize() #carregando a imagem e salvando em lista R,G e B im = Image.open(fileName) rgb_im = im.convert('RGB') self.image_width = image.width() self.image_height = image.height() #print image_width, image_height #guardando imagem de impressao inicial na tela for i in range(0,self.image_width): for j in range(0,self.image_height): r,g,b = rgb_im.getpixel((i,j)) #print i,j,r,g,b self.R_envio.append(r) self.G_envio.append(g) self.B_envio.append(b) I = np.array(im) #convetendo em vertor numpy arr2im = Image.fromarray(I) #voltando para imagem #arr2im.show() #imprimindo imagem #print self.return_bin(self._hex_to_binary(hex(R[0])[2:])) self.R = self.R_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio))] self.G = self.G_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.G_envio))] self.B = self.B_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.B_envio))] #print self.R_envio #print len(self.R_envio) if(self.R == self.G == self.B): self.lista_ASCII_error = self.R_envio[:] self.noise_img(10) self.R_envio_noise = self.lista_ASCII_error[:] #print len(self.R_envio_noise) self.G_envio_noise = self.lista_ASCII_error[:] self.B_envio_noise = self.lista_ASCII_error[:] self.R_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))] self.G_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))] self.B_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))] else: self.lista_ASCII_error = self.R_envio[:] self.noise_img(10) self.R_envio_noise = self.lista_ASCII_error[:] self.R_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))] self.lista_ASCII_error = self.G_envio[:] self.noise_img(10) self.G_envio_noise = self.lista_ASCII_error[:] self.G_noise = self.G_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.G_envio_noise))] self.lista_ASCII_error = self.B_envio[:] self.noise_img(10) self.B_envio_noise = self.lista_ASCII_error[:] self.B_noise = self.B_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.B_envio_noise))] def convertIMAGE_to_Binary_in_label(self): if(self.radioButtonR.isChecked()): if(len(self.R) > 0): texto = self._hex_to_binary([hex(x)[2:] for x in self.R]) #print self.R self.binario = [] self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista #print self.texto self.label2.setText(texto) texto = self._hex_to_binary([hex(x)[2:] for x in self.R_noise]) if(len(texto) > len(self.binario)): texto = texto[:len(self.binario)] elif(len(texto) < len(self.binario)): self.binario = self.binario[:len(texto)] self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista self.plot_NRZ() elif(self.radioButtonG.isChecked()): if(len(self.G) > 0): texto = self._hex_to_binary([hex(x)[2:] for x in self.G]) self.binario = [] self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista #print self.binario self.label2.setText(texto) texto = self._hex_to_binary([hex(x)[2:] for x in self.G_noise]) if(len(texto) > len(self.binario)): texto = texto[:len(self.binario)] elif(len(texto) < len(self.binario)): self.binario = self.binario[:len(texto)] self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista self.plot_NRZ() elif(self.radioButtonB.isChecked()): if(len(self.B) > 0): texto = self._hex_to_binary([hex(x)[2:] for x in self.B]) self.binario = [] self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista #print self.binario self.label2.setText(texto) texto = self._hex_to_binary([hex(x)[2:] for x in self.B_noise]) if(len(texto) > len(self.binario)): texto = texto[:len(self.binario)] elif(len(texto) < len(self.binario)): self.binario = self.binario[:len(texto)] self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista self.plot_NRZ() def functionViewsImage(self): #ajustando janela if(self.checkBoxIMAGE.isChecked()): self.resize(self.width, self.height) else: self.resize(self.width, self.height_main) self.mdiArea.setHidden(False) def functionClearImage(self): #ajustando janela if(self.checkBox1.isChecked()): self.resize(self.width, self.height) else: self.resize(self.width, self.height_main) self.mdiArea.setHidden(not False) def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.zoomInAct = QAction("Zoom &In (25%)", self, shortcut="Ctrl++", enabled=False, triggered=self.zoomIn) self.zoomOutAct = QAction("Zoom &Out (25%)", self, shortcut="Ctrl+-", enabled=False, triggered=self.zoomOut) self.normalSizeAct = QAction("&Normal Size", self, shortcut="Ctrl+S", enabled=False, triggered=self.normalSize) self.fitToWindowAct = QAction("&Fit to Window", self, enabled=False, checkable=True, shortcut="Ctrl+F", triggered=self.fitToWindow) self.viewImage = QAction("&View Image", self, shortcut="Ctrl+I", triggered=self.functionViewsImage) self.clearImage = QAction("&Clear Image", self, shortcut="Ctrl+U", triggered=self.functionClearImage) def createMenus(self): self.fileMenu = QMenu("&File", self) self.fileMenu.addSeparator() self.fileMenu.addAction(self.openAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.fileMenu.addSeparator() self.viewMenu = QMenu("&View", self) self.viewMenu.addSeparator() self.viewMenu.addAction(self.viewImage) self.viewMenu.addSeparator() self.viewMenu.addAction(self.clearImage) self.viewMenu.addSeparator() self.viewMenu.addAction(self.zoomInAct) self.viewMenu.addSeparator() self.viewMenu.addAction(self.zoomOutAct) self.viewMenu.addSeparator() self.viewMenu.addAction(self.normalSizeAct) self.viewMenu.addSeparator() self.viewMenu.addAction(self.fitToWindowAct) self.viewMenu.addSeparator() self.menuBar().addMenu(self.fileMenu) self.menuBar().addMenu(self.viewMenu) def updateActions(self): self.zoomInAct.setEnabled(not self.fitToWindowAct.isChecked()) self.zoomOutAct.setEnabled(not self.fitToWindowAct.isChecked()) self.normalSizeAct.setEnabled(not self.fitToWindowAct.isChecked()) def scaleImage(self, factor): self.scaleFactor *= factor self.labelIMAGE.resize(self.scaleFactor * self.labelIMAGE.pixmap().size()) self.adjustScrollBar(self.scrollAreaIMAGE.horizontalScrollBar(), factor) self.adjustScrollBar(self.scrollAreaIMAGE.verticalScrollBar(), factor) self.zoomInAct.setEnabled(self.scaleFactor < 3.0) self.zoomOutAct.setEnabled(self.scaleFactor > 0.333) def adjustScrollBar(self, scrollBar, factor): scrollBar.setValue(int(factor * scrollBar.value() + ((factor - 1) * scrollBar.pageStep() / 2))) #funcoes para o emissor em ASCII def enviaCaracter(self, PARAM_CARACTER): # Time entre a conexao serial e o tempo para escrever (enviar algo) time.sleep(0.2) self.comport.write(str.encode(PARAM_CARACTER)) def lerEntrada(self): # Iniciando conexao serial self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2) #PARAM_STRING="Ola como vai? Oi estou bem, e voce?" #recebe a entrada value_CRC = CRCCCITT().calculate(str(self.lineEdit1.text())) #calculando valor CRC if(self.checkBox6.isChecked()): PARAM_STRING = " " + ">" + str(value_CRC) + ">" + str(''.join(self.lista_ASCII_error)) + "<" + " " else: PARAM_STRING = " " + ">" + str(value_CRC) + ">" + str(self.lineEdit1.text()) + "<" + " " if(len(PARAM_STRING) > 0): for i in range(0,len(PARAM_STRING)): self.enviaCaracter(PARAM_STRING[i]) # Fechando conexao serial self.comport.close() #funcoes para o receptor em ASCII def recebeCaracter(self): controle_entrada = 0 self.myText = [] self.myCRC = [] # Time entre a conexao serial e o tempo para escrever (enviar algo) time.sleep(0.2) VALUE_SERIAL=self.comport.readline() while(VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("<")): if(VALUE_SERIAL.encode("hex")[:2] == self._word_to_hex(">")): controle_entrada += 1 elif(controle_entrada == 1 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myCRC += VALUE_SERIAL[:1] elif(controle_entrada == 2 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myText += VALUE_SERIAL[:1] # Time entre a conexao serial e o tempo para escrever (enviar algo) time.sleep(0.2) VALUE_SERIAL=self.comport.readline() #print VALUE_SERIAL self.myCRC = int(''.join(self.myCRC)) #print myText #print CRCCCITT().calculate(str(''.join(myText))) self.label2.setStyleSheet('color: black') return(''.join(self.myText)) def lerEntradaRecebida(self): # Iniciando conexao serial self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2) Frase = self.recebeCaracter() self.lineEdit1.setText(str(Frase)) self.comport.close() texto = self._hex_to_binary(self._word_to_hex(self.lineEdit1.text())) self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista self.label2.setText(texto) self.plot_NRZ() #funcoes para o emissor em imagem def lerEntradaIMG(self): # Iniciando conexao serial self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2) self.strIMAGE = [] #vetor que guardara o valor inteiro da imagem como um char #print len(self.R_envio_noise) #print len(self.R_envio) #print self.R list_check_CRC = [] for i in range(0, len(self.R_envio)): if(self.checkBox6.isChecked()): self.strIMAGE.append(hex(self.R_envio_noise[i])[2:]) if(hex(self.R_envio_noise[i])[2:] == '0'): self.strIMAGE.append(hex(self.R_envio_noise[i])[2:]) else: self.strIMAGE.append(hex(self.R_envio[i])[2:]) if(hex(self.R_envio[i])[2:] == '0'): self.strIMAGE.append(hex(self.R_envio[i])[2:]) list_check_CRC.append(hex(self.R_envio[i])[2:]) if(hex(self.R_envio[i])[2:] == '0'): list_check_CRC.append(hex(self.R_envio[i])[2:]) #print len(self.strIMAGE) #print ''.join(self.strIMAGE) value_CRC = CRCCCITT().calculate(str(''.join(list_check_CRC))) if(self.image_height <= 10 or self.image_width <= 10): PARAM_STRING = " " + ">" + str(value_CRC) + ">" + "0" + hex(self.image_height)[2:] + "0" + hex(self.image_width)[2:] + str(''.join(self.strIMAGE)) + "<" + " " else: PARAM_STRING = " " + ">" + str(value_CRC) + ">" + hex(self.image_height)[2:] + hex(self.image_width)[2:] + str(''.join(self.strIMAGE)) + "<" + " " #print PARAM_STRING if(len(PARAM_STRING) > 0): for i in range(0,len(PARAM_STRING)): self.enviaCaracter(PARAM_STRING[i]) # Fechando conexao serial self.comport.close() #funcoes para o receptor em imagem def recebeIMG(self): controle_entrada = 0 self.myText = [] self.myCRC = [] # Time entre a conexao serial e o tempo para escrever (enviar algo) time.sleep(0.2) VALUE_SERIAL=self.comport.readline() while(VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("<")): if(VALUE_SERIAL.encode("hex")[:2] == self._word_to_hex(">")): controle_entrada += 1 elif(controle_entrada == 1 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myCRC += VALUE_SERIAL[:1] elif(controle_entrada == 2 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myText += VALUE_SERIAL[:1] # Time entre a conexao serial e o tempo para escrever (enviar algo) time.sleep(0.2) VALUE_SERIAL=self.comport.readline() #print len(self.myText) #print ''.join(self.myText) self.myCRC = int(''.join(self.myCRC)) #print self.myCRC #print CRCCCITT().calculate(str(''.join(self.myText)[4:])) return(''.join(self.myText)) def lerEntradaRecebidaIMG(self): # Iniciando conexao serial self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2) Frase = self.recebeIMG() #print Frase #print len(Frase) self.comport.close() self.vetorINT = [] #vetor servira para recuperar a imagem recebida for i in range(0, len(Frase), 2): self.vetorINT.append(int(Frase[i:i+2], 16)) #print self.vetorINT #print len(self.vetorINT) list_aux = self.vetorINT[2:] texto = self._hex_to_binary([hex(x)[2:] for x in list_aux]) self.binario = [] self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista #print self.binario self.label2.setStyleSheet('color: black') self.label2.setText(texto) self.plot_NRZ() #gerando imagem self.recuperaIMG() def recuperaIMG(self): #print len(self.vetorINT) #print self.vetorINT[0],self.vetorINT[1] self.vetorIMG = np.zeros((self.vetorINT[0],self.vetorINT[1])) incremento = 0 lista_teste = [] for i in range(0,self.vetorINT[1]): for j in range(0,self.vetorINT[0]): self.vetorIMG[j][i] = self.vetorINT[j+incremento+2] lista_teste.append(self.vetorIMG[j][i]) incremento += self.vetorINT[0] image = QImage() arr2im = Image.fromarray(self.vetorIMG) #convertendo matriz para imagem # arr2im.save("recebido.gif") #print lista_teste #print len(lista_teste) self.labelIMAGE.setPixmap(QPixmap('recebido.gif')) self.scaleFactor = 1.0 self.scrollAreaIMAGE.setVisible(True) self.fitToWindowAct.setEnabled(True) self.updateActions() if not self.fitToWindowAct.isChecked(): self.labelIMAGE.adjustSize() #Deteccao de Erros def verificaCRC_ASCII(self): if(CRCCCITT().calculate(str(''.join(self.myText))) == self.myCRC): self.label2.setStyleSheet('color: green') else: self.label2.setStyleSheet('color: red') def verificaCRC_IMG(self): if(CRCCCITT().calculate(str(''.join(self.myText)[4:])) == self.myCRC): self.label2.setStyleSheet('color: green') else: self.label2.setStyleSheet('color: red') #Insercao de Erro def noise_ASCII(self, max_): if(len(self.lista_ASCII_error) > 1): noise = np.random.normal(0, max_, 100) tam = len(self.lista_ASCII_error) var = random.randint(1,tam-1) for i in range(0, var): value = random.randint(0, tam-1) value_noise = random.randint(0, 99) aux = abs(ord(self.lista_ASCII_error[value]) + int(noise[value_noise])) if(aux == 76 or aux == 74): aux = aux + 1 self.lista_ASCII_error[value] = chr(aux) def noise_img(self,max_): if(len(self.lista_ASCII_error) > 1): noise = np.random.normal(0, max_, 100) tam = len(self.lista_ASCII_error) var = random.randint(1, tam-1) for i in range(0,var): value = random.randint(0, tam-1) value_noise = random.randint(0, 99) aux = abs(self.lista_ASCII_error[value] + int(noise[value_noise])) if(aux > 255 or aux < 150): aux = 255 self.lista_ASCII_error[value] = aux
class MDIWindow(QMainWindow): count = 0 def __init__(self): super().__init__() self.data_dict = {} self.mdi = QMdiArea() self.setCentralWidget(self.mdi) # self.mdi.resize(950,950) bar = self.menuBar() self.current_dir = None self.opened_wd_names = [] file = bar.addMenu("File") file.addAction("New") file.addAction("cascade") file.addAction("Tiled") file.triggered[QAction].connect(self.WindowTrig) load = bar.addMenu("Load") load.addAction("2D") load.addAction("3D") load.triggered[QAction].connect(self.dir_open) toolbar = QToolBar() self.addToolBar(toolbar) bw_button_action = QAction('base_wnd', self) bw_button_action.setStatusTip('base window button') bw_button_action.triggered.connect(self.onclicktb) toolbar.addAction(bw_button_action) self.setWindowTitle("MDI Application") self.base_wd = QMdiSubWindow() self.base_wd.setAttribute(Qt.WA_DeleteOnClose, False) self.base_wd.resize(400, 400) self.base_wd.plt_i = pg.PlotItem(labels={ 'left': ('slits', 'degrees'), 'bottom': ('Kin. Energy', 'eV') }) self.base_wd.plt_iv = pg.ImageView(view=self.base_wd.plt_i) self.base_wd.setWidget(self.base_wd.plt_iv) self.base_wd.setWindowTitle("plot window") self.mdi.addSubWindow(self.base_wd) self.base_wd.show() data_DockWidget = QDockWidget('data', self) data_DockWidget.setObjectName(('data window')) data_DockWidget.setAllowedAreas(Qt.RightDockWidgetArea) self.data_list = QListWidget() data_DockWidget.setWidget(self.data_list) self.addDockWidget(Qt.RightDockWidgetArea, data_DockWidget) self.data_list.itemClicked.connect(self.show_data) self.data_list.itemDoubleClicked.connect(self.get_data) self.mdi.subWindowActivated.connect(self.get_data) def WindowTrig(self, p): if p.text() == "New": MDIWindow.count = MDIWindow.count + 1 sub = QMdiSubWindow() sub.setWidget(QTextEdit()) sub.setWindowTitle("Sub Window" + str(MDIWindow.count)) self.mdi.addSubWindow(sub) sub.show() if p.text() == "cascade": self.mdi.cascadeSubWindows() if p.text() == "Tiled": self.mdi.tileSubWindows() def dir_open(self, p): self.current_dir = dlg.File_dlg.openDirNameDialog(self) print(self.current_dir) if p.text() == "2D": print('2D') files_ls = glob.glob(self.current_dir + '/*.ibw') fls = [f[len(self.current_dir) + 1:] for f in files_ls] print(files_ls) self.data_list.addItems(fls) if p.text() == "3D": zip_ls = glob.glob(self.current_dir + '/*.zip') zp = [f[len(self.current_dir) + 1:] for f in zip_ls] print(zp) self.data_list.addItems(zp) def show_data(self, s): print('show data') file_name = s.text() self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name) e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0] a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0] e_str = self.data_dict['E_axis'][0] a_str = self.data_dict['A_axis'][0] self.base_wd.plt_i.setRange(xRange=[self.data_dict['E_axis'][0], self.data_dict['E_axis'][-1]], \ yRange=[self.data_dict['A_axis'][0], self.data_dict['A_axis'][-1]], update=True, padding = 0) self.base_wd.plt_i.getViewBox().setLimits(xMin= e_str, xMax = self.data_dict['E_axis'][-1],\ yMin=self.data_dict['A_axis'][0], yMax=self.data_dict['A_axis'][-1]) self.base_wd.plt_iv.setImage( self.data_dict['data'], pos=[self.data_dict['E_axis'][0], self.data_dict['A_axis'][0]], scale=[e_sc, a_sc]) # self.base_wd.plt_iv.ui.histogram.hide() self.base_wd.plt_iv.ui.roiBtn.hide() self.base_wd.plt_iv.ui.menuBtn.hide() def get_data(self, s): if isinstance(s, QMdiSubWindow) and str( s.objectName()) in self.opened_wd_names: sub = self.mdi.currentSubWindow() self.data_dict = ut.ibw2dict(self.current_dir + '/' + str(s.objectName())) elif isinstance(s, QListWidgetItem): file_name = s.text() self.opened_wd_names.append(file_name) MDIWindow.count = MDIWindow.count + 1 sub = QMdiSubWindow() sub.resize(550, 550) sub.setWindowTitle(file_name) sub.setObjectName(file_name) self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name) else: print(isinstance(s, QMdiSubWindow), isinstance(s, QListWidgetItem)) print(type(s)) return e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0] a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0] e_rg = self.data_dict['E_axis'][-1] - self.data_dict['E_axis'][0] a_rg = self.data_dict['A_axis'][-1] - self.data_dict['A_axis'][0] e_str = self.data_dict['E_axis'][0] a_str = self.data_dict['A_axis'][0] e_end = self.data_dict['E_axis'][-1] a_end = self.data_dict['A_axis'][-1] print(e_str, a_str) print(e_end, a_end) print(e_rg, a_rg) print(e_sc, a_sc) gr_v = pg.GraphicsView() l = pg.GraphicsLayout() gr_v.setCentralWidget(l) sub.setWidget(gr_v) self.mdi.addSubWindow(sub) sub.show() p1 = l.addPlot(x=[1, 2], y=[1, 2], name="Plot1", title="EDC", pen="r", row=0, col=0) # label1 = pg.LabelItem(justify='right') # p1.addItem(label1) plt_i = pg.PlotItem(labels={ 'left': ('slits', 'degrees'), 'bottom': ('Kin. Energy', 'eV') }) plt_i.setRange(xRange=[e_str, e_end], yRange=[a_str, a_end], update=True, padding=0) vb = plt_i.getViewBox() vb.setLimits(xMin=e_str, xMax=e_end, yMin=a_str, yMax=a_end) vb.setMouseMode(vb.RectMode) l.addItem(plt_i, row=1, col=0) img_i = pg.ImageItem(self.data_dict['data'], border=None) qrect = vb.viewRect() img_i.setRect(qrect) vb.addItem(img_i) vb.autoRange() # vb.invertX() vb.invertY() hist = pg.HistogramLUTItem(image=img_i) l.addItem(hist, row=0, col=1) p2 = l.addPlot(x=[1, 2], y=[2, 1], name="Plot2", title="MDC", pen="g", row=1, col=1) # label2 = pg.LabelItem(justify='left') # plt_i.addItem(label2) # cross hair vLine = pg.InfiniteLine(angle=90, movable=False) hLine = pg.InfiniteLine(angle=0, movable=False) p1.addItem(vLine, ignoreBounds=False) p1.addItem(hLine, ignoreBounds=False) vb1 = p1.vb pcv = plt_i.addLine(x=e_end, pen='r') pch = plt_i.addLine(y=a_str, pen='r') # lROI = pg.ROI(((e_str+e_end)/2,a_str), size=(5*e_sc,a_rg)) # vb.addItem(lROI) # slice, coor = lROI.getArrayRegion(self.data_dict['data'], img_i ,returnMappedCoords = True) # print('slice') # sl_sum=np.sum(slice, axis=0) # print(sl_sum[0:10]) # print(type(slice), slice.shape) # print(type(coor), coor.shape) # print(coor[1,0,0:10]) # p2.invertY() # p2.setYLink(plt_i) # p2.plot(y=coor[1,0,:], x=sl_sum) def onMouseMoved(point): p = vb.mapSceneToView(point) pcv.setValue(p.x()) pch.setValue(p.y()) # print(p.x(), p.y()) hROI = pg.ROI((e_str, p.y()), size=(e_rg, 5 * a_sc)) vb.addItem(hROI) hROI.hide() sl, co = hROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(sl, axis=1) p1.setXLink(plt_i) p1.plot(x=co[0, :, 0], y=sl_sum, clear=True) vROI = pg.ROI((p.x(), a_str), size=(5 * e_sc, a_rg)) vb.addItem(vROI) vROI.hide() slc, coo = vROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(slc, axis=0) p2.invertY() p2.setYLink(plt_i) p2.plot(y=coo[1, 0, :], x=sl_sum, clear=True) # label2.setText("{}-{}".format(p.x(), p.y())) img_i.scene().sigMouseMoved.connect(onMouseMoved) def onclicktb(self): self.base_wd.plt_i = pg.PlotItem(labels={ 'left': ('slits', 'degrees'), 'bottom': ('Kin. Energy', 'eV') }) self.base_wd.plt_iv = pg.ImageView(view=self.base_wd.plt_i) self.base_wd.setWidget(self.base_wd.plt_iv) self.base_wd.show()
def get_data(self, s): if isinstance(s, QMdiSubWindow) and str( s.objectName()) in self.opened_wd_names: sub = self.mdi.currentSubWindow() self.data_dict = ut.ibw2dict(self.current_dir + '/' + str(s.objectName())) elif isinstance(s, QListWidgetItem): file_name = s.text() self.opened_wd_names.append(file_name) MDIWindow.count = MDIWindow.count + 1 sub = QMdiSubWindow() sub.resize(550, 550) sub.setWindowTitle(file_name) sub.setObjectName(file_name) self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name) else: print(isinstance(s, QMdiSubWindow), isinstance(s, QListWidgetItem)) print(type(s)) return e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0] a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0] e_rg = self.data_dict['E_axis'][-1] - self.data_dict['E_axis'][0] a_rg = self.data_dict['A_axis'][-1] - self.data_dict['A_axis'][0] e_str = self.data_dict['E_axis'][0] a_str = self.data_dict['A_axis'][0] e_end = self.data_dict['E_axis'][-1] a_end = self.data_dict['A_axis'][-1] print(e_str, a_str) print(e_end, a_end) print(e_rg, a_rg) print(e_sc, a_sc) gr_v = pg.GraphicsView() l = pg.GraphicsLayout() gr_v.setCentralWidget(l) sub.setWidget(gr_v) self.mdi.addSubWindow(sub) sub.show() p1 = l.addPlot(x=[1, 2], y=[1, 2], name="Plot1", title="EDC", pen="r", row=0, col=0) # label1 = pg.LabelItem(justify='right') # p1.addItem(label1) plt_i = pg.PlotItem(labels={ 'left': ('slits', 'degrees'), 'bottom': ('Kin. Energy', 'eV') }) plt_i.setRange(xRange=[e_str, e_end], yRange=[a_str, a_end], update=True, padding=0) vb = plt_i.getViewBox() vb.setLimits(xMin=e_str, xMax=e_end, yMin=a_str, yMax=a_end) vb.setMouseMode(vb.RectMode) l.addItem(plt_i, row=1, col=0) img_i = pg.ImageItem(self.data_dict['data'], border=None) qrect = vb.viewRect() img_i.setRect(qrect) vb.addItem(img_i) vb.autoRange() # vb.invertX() vb.invertY() hist = pg.HistogramLUTItem(image=img_i) l.addItem(hist, row=0, col=1) p2 = l.addPlot(x=[1, 2], y=[2, 1], name="Plot2", title="MDC", pen="g", row=1, col=1) # label2 = pg.LabelItem(justify='left') # plt_i.addItem(label2) # cross hair vLine = pg.InfiniteLine(angle=90, movable=False) hLine = pg.InfiniteLine(angle=0, movable=False) p1.addItem(vLine, ignoreBounds=False) p1.addItem(hLine, ignoreBounds=False) vb1 = p1.vb pcv = plt_i.addLine(x=e_end, pen='r') pch = plt_i.addLine(y=a_str, pen='r') # lROI = pg.ROI(((e_str+e_end)/2,a_str), size=(5*e_sc,a_rg)) # vb.addItem(lROI) # slice, coor = lROI.getArrayRegion(self.data_dict['data'], img_i ,returnMappedCoords = True) # print('slice') # sl_sum=np.sum(slice, axis=0) # print(sl_sum[0:10]) # print(type(slice), slice.shape) # print(type(coor), coor.shape) # print(coor[1,0,0:10]) # p2.invertY() # p2.setYLink(plt_i) # p2.plot(y=coor[1,0,:], x=sl_sum) def onMouseMoved(point): p = vb.mapSceneToView(point) pcv.setValue(p.x()) pch.setValue(p.y()) # print(p.x(), p.y()) hROI = pg.ROI((e_str, p.y()), size=(e_rg, 5 * a_sc)) vb.addItem(hROI) hROI.hide() sl, co = hROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(sl, axis=1) p1.setXLink(plt_i) p1.plot(x=co[0, :, 0], y=sl_sum, clear=True) vROI = pg.ROI((p.x(), a_str), size=(5 * e_sc, a_rg)) vb.addItem(vROI) vROI.hide() slc, coo = vROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(slc, axis=0) p2.invertY() p2.setYLink(plt_i) p2.plot(y=coo[1, 0, :], x=sl_sum, clear=True) # label2.setText("{}-{}".format(p.x(), p.y())) img_i.scene().sigMouseMoved.connect(onMouseMoved)
class MainWindow(QMainWindow): def __init__(self, win_arg): super(MainWindow, self).__init__() loadUi(getcwd() + '/ui/main.ui', self) self.mdi.setBackground(QBrush(QImage(getcwd() + "/images/logo.png"))) self.setWindowIcon(QIcon(getcwd() + "/images/icon.ico")) self.menu_3.setEnabled(False) if "-FS" in win_arg: self.arg_FS() logging.config.fileConfig(getcwd() + '/setting/logger_conf.ini') self.logger = logging.getLogger("MainLog") self.show() self.setDisabled(True) self.login = login_window.LoginWindow(self) # self.admin_login() def access(self): for item in User().access_list(self.__class__.__name__): a = getattr(self, item["atr1"]) if item["atr2"]: a = getattr(a, item["atr2"]) if item["value"]: try: val = int(item["value"]) except: val = item["value"] a(val) else: a() def view_material(self): self.material = supply_material.MaterialSupplyList() self.sub_material = QMdiSubWindow() self.sub_material.setWidget(self.material) self.mdi.addSubWindow(self.sub_material) self.sub_material.resize(self.material.size()) self.sub_material.show() def view_material_provider(self): self.mat_prov = provider.ProviderMaterial() self.sub_provider = QMdiSubWindow() self.sub_provider.setWidget(self.mat_prov) self.mdi.addSubWindow(self.sub_provider) self.sub_provider.resize(self.mat_prov.size()) self.sub_provider.show() def view_material_name(self): self.material_neme = supply_material.MaterialName() self.sub_mater_name = QMdiSubWindow() self.sub_mater_name.setWidget(self.material_neme) self.mdi.addSubWindow(self.sub_mater_name) self.sub_mater_name.resize(self.material_neme.size()) self.sub_mater_name.show() def view_comparing_name(self): self.comparing_name = comparing.ComparingName() self.sub_comp_name = QMdiSubWindow() self.sub_comp_name.setWidget(self.comparing_name) self.mdi.addSubWindow(self.sub_comp_name) self.sub_comp_name.resize(self.comparing_name.size()) self.sub_comp_name.show() def view_accessories_name(self): self.accessories_name = supply_accessories.AccessoriesName() self.sub_accsess_name = QMdiSubWindow() self.sub_accsess_name.setWidget(self.accessories_name) self.mdi.addSubWindow(self.sub_accsess_name) self.sub_accsess_name.resize(self.accessories_name.size()) self.sub_accsess_name.show() def view_accessories_provider(self): self.access_prov = provider.ProviderAccessories() self.sub_provider_access = QMdiSubWindow() self.sub_provider_access.setWidget(self.access_prov) self.mdi.addSubWindow(self.sub_provider_access) self.sub_provider_access.resize(self.access_prov.size()) self.sub_provider_access.show() def view_accessories(self): self.accessories = supply_accessories.AccessoriesSupplyList() self.accessories.set_settings() self.sub_accessories = QMdiSubWindow() self.sub_accessories.setWidget(self.accessories) self.mdi.addSubWindow(self.sub_accessories) self.sub_accessories.resize(self.accessories.size()) self.sub_accessories.show() def view_staff_country(self): self.staff_country = staff.Country() self.sub_staff_country = QMdiSubWindow() self.sub_staff_country.setWidget(self.staff_country) self.mdi.addSubWindow(self.sub_staff_country) self.sub_staff_country.resize(self.staff_country.size()) self.sub_staff_country.show() def view_staff_position(self): self.staff_position = staff.StaffPosition() self.sub_staff_position = QMdiSubWindow() self.sub_staff_position.setWidget(self.staff_position) self.mdi.addSubWindow(self.sub_staff_position) self.sub_staff_position.resize(self.staff_position.size()) self.sub_staff_position.show() def view_staff_list(self): self.staff_list = staff.Staff() self.sub_staff_list = QMdiSubWindow() self.sub_staff_list.setWidget(self.staff_list) self.mdi.addSubWindow(self.sub_staff_list) self.sub_staff_list.resize(self.staff_list.size()) self.sub_staff_list.show() def view_staff_calendar(self): self.staff_calendar = notification.WorkCalendar() self.sub_staff_calendar = QMdiSubWindow() self.sub_staff_calendar.setWidget(self.staff_calendar) self.mdi.addSubWindow(self.sub_staff_calendar) self.sub_staff_calendar.resize(self.staff_calendar.size()) self.sub_staff_calendar.show() def view_staff_card(self): self.staff_card = staff_traffic.StaffCardList() self.sub_staff_card = QMdiSubWindow() self.sub_staff_card.setWidget(self.staff_card) self.mdi.addSubWindow(self.sub_staff_card) self.sub_staff_card.resize(self.staff_card.size()) self.sub_staff_card.show() def view_staff_traffic(self): self.staff_traffic = staff_traffic.StaffTraffic() self.sub_staff_traffic = QMdiSubWindow() self.sub_staff_traffic.setWidget(self.staff_traffic) self.mdi.addSubWindow(self.sub_staff_traffic) self.sub_staff_traffic.resize(self.staff_traffic.size()) self.sub_staff_traffic.show() def view_settings_path(self): self.sett_path = program_settings.SettingsPath() self.sub_sett_path = QMdiSubWindow() self.sub_sett_path.setWidget(self.sett_path) self.mdi.addSubWindow(self.sub_sett_path) self.sub_sett_path.resize(self.sett_path.size()) self.sub_sett_path.show() def view_settings_road(self): self.sett_road = program_settings.SettingsRoad() self.sub_sett_road = QMdiSubWindow() self.sub_sett_road.setWidget(self.sett_road) self.mdi.addSubWindow(self.sub_sett_road) self.sub_sett_road.resize(self.sett_road.size()) self.sub_sett_road.show() def view_clients(self): self.clients = clients.ClientList() self.sub_clients = QMdiSubWindow() self.sub_clients.setWidget(self.clients) self.mdi.addSubWindow(self.sub_clients) self.sub_clients.resize(self.clients.size()) self.sub_clients.show() def view_operation(self): self.operation_list = operation.OperationList() self.sub_operation_list = QMdiSubWindow() self.sub_operation_list.setWidget(self.operation_list) self.mdi.addSubWindow(self.sub_operation_list) self.sub_operation_list.resize(self.operation_list.size()) self.sub_operation_list.show() def view_add_operation(self): self.add_operation_list = operation.OperationAddList() self.sub_add_operation_list = QMdiSubWindow() self.sub_add_operation_list.setWidget(self.add_operation_list) self.mdi.addSubWindow(self.sub_add_operation_list) self.sub_add_operation_list.resize(self.add_operation_list.size()) self.sub_add_operation_list.show() def view_product(self): self.article_list = article.ArticleListOld() self.sub_article_list = QMdiSubWindow() self.sub_article_list.setWidget(self.article_list) self.mdi.addSubWindow(self.sub_article_list) self.sub_article_list.resize(self.article_list.size()) self.sub_article_list.show() def view_order_ooo_list(self): self.order_list = order.OrderListOOO() self.sub_order_list = QMdiSubWindow() self.sub_order_list.setWidget(self.order_list) self.mdi.addSubWindow(self.sub_order_list) self.sub_order_list.resize(self.order_list.size()) self.sub_order_list.show() def view_order_ip_list(self): self.order_list = order.OrderListIP() self.sub_order_list = QMdiSubWindow() self.sub_order_list.setWidget(self.order_list) self.mdi.addSubWindow(self.sub_order_list) self.sub_order_list.resize(self.order_list.size()) self.sub_order_list.show() def view_cut_mission_list(self): self.cut_mission_list = cut.CutListMission() self.sub_cut_mission_list = QMdiSubWindow() self.sub_cut_mission_list.setWidget(self.cut_mission_list) self.mdi.addSubWindow(self.sub_cut_mission_list) self.sub_cut_mission_list.resize(self.cut_mission_list.size()) self.sub_cut_mission_list.show() def view_cut_list(self): self.cut_list = cut.CutList() self.sub_cut_list = QMdiSubWindow() self.sub_cut_list.setWidget(self.cut_list) self.mdi.addSubWindow(self.sub_cut_list) self.sub_cut_list.resize(self.cut_list.size()) self.sub_cut_list.show() def view_article_list(self): self.article_list_all = article.ArticleListAll() self.sub_article_list_all = QMdiSubWindow() self.sub_article_list_all.setWidget(self.article_list_all) self.mdi.addSubWindow(self.sub_article_list_all) self.sub_article_list_all.resize(self.article_list_all.size()) self.sub_article_list_all.show() def view_article_test(self): self.article_test = article.ArticleList() self.sub_article_test = QMdiSubWindow() self.sub_article_test.setWidget(self.article_test) self.mdi.addSubWindow(self.sub_article_test) self.sub_article_test.resize(self.article_test.size()) self.sub_article_test.show() def view_pack_list(self): self.pack_list = pack.PackList() self.sub_pack_list = QMdiSubWindow() self.sub_pack_list.setWidget(self.pack_list) self.mdi.addSubWindow(self.sub_pack_list) self.sub_pack_list.resize(self.pack_list.size()) self.sub_pack_list.show() def view_pay_plus_minus(self): self.pay_plus_minus = pay.PayList() self.sub_pay_plus_minus = QMdiSubWindow() self.sub_pay_plus_minus.setWidget(self.pay_plus_minus) self.mdi.addSubWindow(self.sub_pay_plus_minus) self.sub_pay_plus_minus.resize(self.pay_plus_minus.size()) self.sub_pay_plus_minus.show() def view_other_order_edi(self): self.input_order_edi = other.OrderEDI() self.sub_input_order_edi = QMdiSubWindow() self.sub_input_order_edi.setWidget(self.input_order_edi) self.mdi.addSubWindow(self.sub_input_order_edi) self.sub_input_order_edi.resize(self.input_order_edi.size()) self.sub_input_order_edi.show() def view_audit_verification(self): self.audit_verification = audit.AuditVerification() self.sub_audit_verification = QMdiSubWindow() self.sub_audit_verification.setWidget(self.audit_verification) self.mdi.addSubWindow(self.sub_audit_verification) self.sub_audit_verification.resize(self.audit_verification.size()) self.sub_audit_verification.show() def view_salary_work(self): self.salary_list = salary.SalaryList() self.sub_salary_list = QMdiSubWindow() self.sub_salary_list.setWidget(self.salary_list) self.mdi.addSubWindow(self.sub_salary_list) self.sub_salary_list.resize(self.salary_list.size()) self.sub_salary_list.show() def view_pack_operation_list(self): self.operation_list = operation_list.PayList(no_start_set=True) self.sub_operation_list = QMdiSubWindow() self.sub_operation_list.setWidget(self.operation_list) self.mdi.addSubWindow(self.sub_operation_list) self.sub_operation_list.resize(self.operation_list.size()) self.sub_operation_list.show() def view_product_warehouse(self): self.product_warehouse = warehouse_product.Warehouse() self.sub_product_warehouse = QMdiSubWindow() self.sub_product_warehouse.setWidget(self.product_warehouse) self.mdi.addSubWindow(self.sub_product_warehouse) self.sub_product_warehouse.resize(self.product_warehouse.size()) self.sub_product_warehouse.show() def view_product_warehouse_2(self): self.product_warehouse2 = warehouse_product.Warehouse2() self.sub_product_warehouse2 = QMdiSubWindow() self.sub_product_warehouse2.setWidget(self.product_warehouse2) self.mdi.addSubWindow(self.sub_product_warehouse2) self.sub_product_warehouse2.resize(self.product_warehouse2.size()) self.sub_product_warehouse2.show() def view_warehouse_rest(self): self.rest_warehouse = warehouse_rest.WarehouseRest() self.sub_rest_warehouse = QMdiSubWindow() self.sub_rest_warehouse.setWidget(self.rest_warehouse) self.mdi.addSubWindow(self.sub_rest_warehouse) self.sub_rest_warehouse.resize(self.rest_warehouse.size()) self.sub_rest_warehouse.show() def view_warehouse_material(self): self.material_warehouse = warehouse_material.Warehouse() self.sub_material_warehouse = QMdiSubWindow() self.sub_material_warehouse.setWidget(self.material_warehouse) self.mdi.addSubWindow(self.sub_material_warehouse) self.sub_material_warehouse.resize(self.material_warehouse.size()) self.sub_material_warehouse.show() def view_warehouse_accessories(self): self.accessories_warehouse = warehouse_accessories.Warehouse() self.sub_material_accessories = QMdiSubWindow() self.sub_material_accessories.setWidget(self.accessories_warehouse) self.mdi.addSubWindow(self.sub_material_accessories) self.sub_material_accessories.resize(self.accessories_warehouse.size()) self.sub_material_accessories.show() def view_warehouse_adjustments_material(self): self.adjustments_material = warehouse_adjustments.MaterialAdjustmentsList() self.sub_adjustments_material = QMdiSubWindow() self.sub_adjustments_material.setWidget(self.adjustments_material) self.mdi.addSubWindow(self.sub_adjustments_material) self.sub_adjustments_material.resize(self.adjustments_material.size()) self.sub_adjustments_material.show() def view_transaction_warehouse(self): self.transaction_warehouse = transaction_warehouse.TransactionWarehouse() self.sub_transaction_warehouse = QMdiSubWindow() self.sub_transaction_warehouse.setWidget(self.transaction_warehouse) self.mdi.addSubWindow(self.sub_transaction_warehouse) self.sub_transaction_warehouse.resize(self.transaction_warehouse.size()) self.sub_transaction_warehouse.show() def view_test_warehouse_material(self): self.test_warehouse_material = test_warehouse.TestWarehouseMaterial() self.sub_test_warehouse_material = QMdiSubWindow() self.sub_test_warehouse_material.setWidget(self.test_warehouse_material) self.mdi.addSubWindow(self.sub_test_warehouse_material) self.sub_test_warehouse_material.resize(self.test_warehouse_material.size()) self.sub_test_warehouse_material.show() def view_test_warehouse_accessories(self): self.test_warehouse_accessories = test_warehouse.TestWarehouseAccessories() self.sub_test_warehouse_accessories = QMdiSubWindow() self.sub_test_warehouse_accessories.setWidget(self.test_warehouse_accessories) self.mdi.addSubWindow(self.sub_test_warehouse_accessories) self.sub_test_warehouse_accessories.resize(self.test_warehouse_accessories.size()) self.sub_test_warehouse_accessories.show() def view_test_fast_warehouse(self): self.test_fast_warehouse = test_warehouse.TestFastWarehouse() self.sub_test_fast_warehouse = QMdiSubWindow() self.sub_test_fast_warehouse.setWidget(self.test_fast_warehouse) self.mdi.addSubWindow(self.sub_test_fast_warehouse) self.sub_test_fast_warehouse.resize(self.test_fast_warehouse.size()) self.sub_test_fast_warehouse.show() def view_beika(self): self.beika = beika.BeikaList() self.sub_beika = QMdiSubWindow() self.sub_beika.setWidget(self.beika) self.mdi.addSubWindow(self.sub_beika) self.sub_beika.resize(self.beika.size()) self.sub_beika.show() def view_supply_material(self): self.supply_material = supply_material.MaterialSupplyList() self.sub_supply_material = QMdiSubWindow() self.sub_supply_material.setWidget(self.supply_material) self.mdi.addSubWindow(self.sub_supply_material) self.sub_supply_material.resize(self.supply_material.size()) self.sub_supply_material.show() def view_supply_accessories(self): self.supply_accessories = supply_accessories.AccessoriesSupplyList() self.sub_supply_accessories = QMdiSubWindow() self.sub_supply_accessories.setWidget(self.supply_accessories) self.mdi.addSubWindow(self.sub_supply_accessories) self.sub_supply_accessories.resize(self.supply_accessories.size()) self.sub_supply_accessories.show() def view_scan_pack(self): self.scan_pack = scan_pack.ScanPack() self.sub_scan_pack = QMdiSubWindow() self.sub_scan_pack.setWidget(self.scan_pack) self.mdi.addSubWindow(self.sub_scan_pack) self.sub_scan_pack.resize(self.scan_pack.size()) self.sub_scan_pack.show() def view_settings_access(self): self.settings_access = settings_access.Access() self.sub_settings_access = QMdiSubWindow() self.sub_settings_access.setWidget(self.settings_access) self.mdi.addSubWindow(self.sub_settings_access) self.sub_settings_access.resize(self.settings_access.size()) self.sub_settings_access.show() def view_report_need_article_order(self): self.report_need_article = report_order.NeedArticleOrder() self.sub_report_need_article = QMdiSubWindow() self.sub_report_need_article.setWidget(self.report_need_article) self.mdi.addSubWindow(self.sub_report_need_article) self.sub_report_need_article.resize(self.report_need_article.size()) self.sub_report_need_article.show() def view_report_supply(self): self.report_supply = report_supply.ReportSupply() self.sub_report_supply = QMdiSubWindow() self.sub_report_supply.setWidget(self.report_supply) self.mdi.addSubWindow(self.sub_report_supply) self.sub_report_supply.resize(self.report_supply.size()) self.sub_report_supply.show() def view_report_cost_article(self): self.report_cost_article = report_cost_article.ReportCostArticle() self.sub_report_cost_article = QMdiSubWindow() self.sub_report_cost_article.setWidget(self.report_cost_article) self.mdi.addSubWindow(self.sub_report_cost_article) self.sub_report_cost_article.resize(self.report_cost_article.size()) self.sub_report_cost_article.show() def view_report_sibestoimost(self): self.report_sibest = report_sibestoimost.ReportSibestoimost() self.sub_report_sibest = QMdiSubWindow() self.sub_report_sibest.setWidget(self.report_sibest) self.mdi.addSubWindow(self.sub_report_sibest) self.sub_report_sibest.resize(self.report_sibest.size()) self.sub_report_sibest.show() def view_report_rest_for_work(self): self.report_rest_work = report_rest_work.ReportRestWork() self.sub_report_rest_work = QMdiSubWindow() self.sub_report_rest_work.setWidget(self.report_rest_work) self.mdi.addSubWindow(self.sub_report_rest_work) self.sub_report_rest_work.resize(self.report_rest_work.size()) self.sub_report_rest_work.show() def view_report_pack_accept(self): self.report_pack_accept = report_accept_pack.ReportAcceptPack() self.sub_report_pack_accept = QMdiSubWindow() self.sub_report_pack_accept.setWidget(self.report_pack_accept) self.mdi.addSubWindow(self.sub_report_pack_accept) self.sub_report_pack_accept.resize(self.report_pack_accept.size()) self.sub_report_pack_accept.show() def view_report_material_consumption(self): self.report_material_consumption = report_material_consumption.ReportMaterialConsumption() self.sub_report_material_consumption = QMdiSubWindow() self.sub_report_material_consumption.setWidget(self.report_material_consumption) self.mdi.addSubWindow(self.sub_report_material_consumption) self.sub_report_material_consumption.resize(self.report_material_consumption.size()) self.sub_report_material_consumption.show() def view_report_profit(self): self.report_profit = report_profit.ReportProfit() self.sub_report_profit = QMdiSubWindow() self.sub_report_profit.setWidget(self.report_profit) self.mdi.addSubWindow(self.sub_report_profit) self.sub_report_profit.resize(self.report_profit.size()) self.sub_report_profit.show() def view_report_performance_company(self): self.report_performance_company = report_performance_company.ReportPerformanceCompany() self.sub_report_performance_company = QMdiSubWindow() self.sub_report_performance_company.setWidget(self.report_performance_company) self.mdi.addSubWindow(self.sub_report_performance_company) self.sub_report_performance_company.resize(self.report_performance_company.size()) self.sub_report_performance_company.show() def view_report_shipped_customer(self): self.report_shipped_customer = report_shipped_to_customer.ReportShippedCustomer() self.sub_report_shipped_customer = QMdiSubWindow() self.sub_report_shipped_customer.setWidget(self.report_shipped_customer) self.mdi.addSubWindow(self.sub_report_shipped_customer) self.sub_report_shipped_customer.resize(self.report_shipped_customer.size()) self.sub_report_shipped_customer.show() def view_report_warehouse_balance_date(self): self.report_warehouse_balance_date = report_warehouse_balance_date.ReportWarehouseBalanceDate() self.sub_report_warehouse_balance_date = QMdiSubWindow() self.sub_report_warehouse_balance_date.setWidget(self.report_warehouse_balance_date) self.mdi.addSubWindow(self.sub_report_warehouse_balance_date) self.sub_report_warehouse_balance_date.resize(self.report_warehouse_balance_date.size()) self.sub_report_warehouse_balance_date.show() def view_report_reject(self): self.report_reject = report_reject.ReportReject() self.sub_report_reject = QMdiSubWindow() self.sub_report_reject.setWidget(self.report_reject) self.mdi.addSubWindow(self.sub_report_reject) self.sub_report_reject.resize(self.report_reject.size()) self.sub_report_reject.show() def view_report_all(self): self.report_all = report_all.ReportAll() self.sub_view_report_all = QMdiSubWindow() self.sub_view_report_all.setWidget(self.report_all) self.mdi.addSubWindow(self.sub_view_report_all) self.sub_view_report_all.resize(self.report_all.size()) self.sub_view_report_all.show() def view_report_nalog(self): self.report_nalog = report_nalog.ReportNalog() self.sub_report_nalog = QMdiSubWindow() self.sub_report_nalog.setWidget(self.report_nalog) self.mdi.addSubWindow(self.sub_report_nalog) self.sub_report_nalog.resize(self.report_nalog.size()) self.sub_report_nalog.show() def view_report_article_day(self): self.report_article_day = report_article_day.ReportArticleDay() self.sub_report_article_day = QMdiSubWindow() self.sub_report_article_day.setWidget(self.report_article_day) self.mdi.addSubWindow(self.sub_report_article_day) self.sub_report_article_day.resize(self.report_article_day.size()) self.sub_report_article_day.show() def view_material_in_pack(self): self.material_in_pack = material_in_pack.MaterialInPack() self.sub_material_in_pack = QMdiSubWindow() self.sub_material_in_pack.setWidget(self.material_in_pack) self.mdi.addSubWindow(self.sub_material_in_pack) self.sub_material_in_pack.resize(self.material_in_pack.size()) self.sub_material_in_pack.show() def view_shipment_order(self): self.shipment_order = shipment_order.ShipmentOrder() self.sub_shipment_order = QMdiSubWindow() self.sub_shipment_order.setWidget(self.shipment_order) self.mdi.addSubWindow(self.sub_shipment_order) self.sub_shipment_order.resize(self.shipment_order.size()) self.sub_shipment_order.show() def view_test_window(self): self.test_window = test_window.TestWindow() self.sub_test_window = QMdiSubWindow() self.sub_test_window.setWidget(self.test_window) self.mdi.addSubWindow(self.sub_test_window) self.sub_test_window.resize(self.test_window.size()) self.sub_test_window.show() def login_access(self): self.logger.info(u"[Пользователь {:04d}] {}".format(User().id(), "Зашел в программу")) self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name()) self.setEnabled(True) self.setFocus() self.access() def admin_login(self): self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name()) self.setEnabled(True) self.setFocus() self.access() def beika_no_finished(self): query = """SELECT COUNT(*) FROM beika WHERE Finished = 0""" sql_info = my_sql.sql_select(query) if "mysql.connector.errors" in str(type(sql_info)): beika_txt = "error sql" else: beika_txt = "Не зкарыто бейки: " + str(sql_info[0][0]) beika = QLabel(beika_txt) self.statusBar().addPermanentWidget(beika) def closeEvent(self, e): try: self.logger.info(u"[Пользователь {:04d}] {}".format(User().id(), "Вышел из программы")) except: print("Нет логина") e.accept() self.close() self.destroy() sys.exit() def arg_FS(self): self.setWindowState(Qt.WindowMaximized)