class Authorization(QtWidgets.QMainWindow): def enter(self): login = self.ui.loginEdit.text() password = self.ui.passworEdit.text() if get_password(login) is None: QMessageBox.question(self, 'Error', 'Error', QMessageBox.Ok, QMessageBox.Ok) elif get_password(login).lower() == password.lower(): self.user_window = User(login) self.user_window.show() elif get_password(login).lower() == (password.lower() + '~1'): self.w3 = Administrator(login) self.w3.show() else: QMessageBox.question(self, 'Error', 'Error', QMessageBox.Ok, QMessageBox.Ok) def exit(self): self.close() def registration(self): self.w2 = Account() self.w2.show() def __init__(self): super(Authorization, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.enter.clicked.connect(self.enter) self.ui.exit.clicked.connect(self.exit) self.ui.reg.clicked.connect(self.registration)
class eitMain(QMainWindow): def __init__(self): super(eitMain, self).__init__() self.ui = Ui_MainWindow() #Opens the main window. self.ui.setupUi(self) self.ui.searchBtn.clicked.connect( self.charSearch) #this is the search button. self.ui.actionExit.triggered.connect( QApplication.quit) #This is the quit option in the menu bar. def charSearch( self ): #this passes the text from the search box to the later thing that actually searches. self.charName = self.ui.charSearch.text() esiFunction.charIntelSearch(self, eitMain) def noResults( self ): #this is displayed if your search has no results, otherwise it would crash. noResults = QMessageBox() noResults.setIcon(QMessageBox.Information) noResults.setText("No Results Found.") noResults.setInformativeText( "Search must be exact.\n\nCase Sensitive.") noResults.setStandardButtons(QMessageBox.Ok) noResults.setWindowTitle("Error") noResults.exec_() self.ui.searchBtn.clicked.connect(self.charSearch)
def init_gui(): app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
class mywindow(QtWidgets.QMainWindow): def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.comboBox.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_2.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_3.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_4.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_5.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_6.currentIndexChanged.connect(self.updateLabel) def updateLabel(self): currentDataArr = [ str(determineValue(self.ui.comboBox.currentText())), str(determineValue(self.ui.comboBox_2.currentText())), str(determineValue(self.ui.comboBox_3.currentText())), str(determineValue(self.ui.comboBox_4.currentText())), str(determineValue(self.ui.comboBox_5.currentText())), str(determineValue(self.ui.comboBox_6.currentText())) ] result = '' for i in range(len(currentDataArr)): if currentDataArr[i] == '-1': continue result = result + currentDataArr[i] self.ui.label.setText(result + " ohms")
class MatplotlibWidget(QMainWindow): def __init__(self): super().__init__() #loadUi("design.ui", self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setWindowTitle("yet another title (im bad at names)") self.ui.MplWidget.canvas.axes.format_coord = lambda x, y: "" self.addToolBar(2, NavigationToolbar2QT(self.ui.MplWidget.canvas, self)) self.ui.MplWidget.canvas.mpl_connect("motion_notify_event", self.handle_mouse_moved) self.draw_graph() def handle_mouse_moved(self, event): if event.xdata is not None and event.ydata is not None: #print(f"x: {event.xdata:.2f}, y: {event.ydata:.2f}") self.ui.statusbar.showMessage( f"x: {event.xdata:.2f}, y: {event.ydata:.2f}") def draw_graph(self): fq = randint(1, 100) ln = 100 t = np.linspace(0, 1, ln) wave = np.cos(2 * np.pi * fq * t) self.ui.MplWidget.canvas.axes.clear() self.ui.MplWidget.canvas.axes.plot(wave) self.ui.MplWidget.canvas.draw()
class MyWindow(QtWidgets.QMainWindow): def __init__(self): super(MyWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.download_btn.clicked.connect(self.download) self.ui.get_lex.clicked.connect(self.analysis) def download(self): path = self.ui.pathfile.text() with open(path) as file: data = file.readlines() self.ui.listWidget.addItems(data) def analysis(self): lex_list = [] for index in range(self.ui.listWidget.count()): for item_pair in lex_analysis( self.ui.listWidget.item(index).text()): lex_list.append(item_pair) self.ui.tableWidget.setRowCount(len(lex_list)) row = 1 for lexem, lexem_type in lex_list: self.ui.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(lexem)) self.ui.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(lexem_type)) row += 1
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) # connected run_alg to btn self.ui.pushButton.clicked.connect(self.run_alg)
def __init__(self): super(Authorization, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.enter.clicked.connect(self.enter) self.ui.exit.clicked.connect(self.exit) self.ui.reg.clicked.connect(self.registration)
class sayiTahmin (QMainWindow): pc_sayi = random.randint(1, 100) flag = False kalan_hak = 4 def __init__(self): super().__init__() self.ui=Ui_MainWindow() self.ui.setupUi(self) self.setWindowIcon(QIcon(":\icons/num.jpg")) self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1)) self.ui.txt_tahmin.returnPressed.connect(self.tahminet) self.ui.btn_yenioyun.clicked.connect(self.yeniOyun) def yeniOyun(self): self.kalan_hak=4 self.flag=False self.ui.txt_sonuc.setText("Yeni Oyun Başladı") self.ui.txt_tahmin.setText("") self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1)) self.pc_sayi = random.randint(1, 100) def tahminet(self): try: girilenSayi = int(self.ui.txt_tahmin.text()) if self.pc_sayi == int(girilenSayi): self.ui.txt_sonuc.setText("Tebrikler doğru bildiniz.. " + str(self.pc_sayi)) self.flag = True self.ui.txt_tahmin.setText("") #self.yeniOyun() elif self.kalan_hak == 0: self.ui.txt_sonuc.setText( "Son hakkında da bilemedin ve hakkın bitti.. Başka bir oyunda tekrar deneyin. \n Doğru sayi: " + str( self.pc_sayi)) self.ui.txt_tahmin.setText("") self.ui.txt_kalanhak.setText(str(self.kalan_hak)) elif int(girilenSayi) > self.pc_sayi: self.ui.txt_sonuc.setText( "Tekrar Deneyin.. İpucu: Daha küçük sayi girin.. ") # Kalan hakkınız: " + str(self.kalan_hak)) self.kalan_hak -= 1 self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1)) self.ui.txt_tahmin.setText("") else: self.ui.txt_sonuc.setText( "Tekrar Deneyin.. İpucu: Daha büyük bir sayi girin..") # Kalan hakkınız: " + str(self.kalan_hak)) self.kalan_hak -= 1 self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1)) self.ui.txt_tahmin.setText("") except ValueError: self.ui.txt_sonuc.setText("Sayi giriniz..")
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.mosStyleLable.setText("") self.ui.petStyleLabe.setText("") self.ui.splitBtn.clicked.connect(self.splitBtn_clicked)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent=parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.figure = Figure() self.figureCanvas = FigureCanvas(self.figure) self.plotToolbar = NavigationToolbar(self.figureCanvas, self) self.data = StiffnessData()
def __init__(self, dialog, text=None): Ui_MainWindow.__init__(self) self.setupUi(dialog) self.text = text self.init_ui() dialog.setWindowTitle("GCG") scriptDir = path.dirname(path.realpath('__file__')) dialog.setWindowIcon(QtGui.QIcon(scriptDir + path.sep + 'images/gcg.png'))
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.label.setText('Hello4!') self.ui.label.setFont(QtGui.QFont('SansSerif', 25)) self.ui.label.setFixedHeight(50)
def __init__(self): super(mywindow, self).__init__() self.mutex = threading.Lock() self.semaphore = threading.Semaphore() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.start_threads)
def __init__(self): super().__init__() self.ui = Ui_MainWindow(self) self.ui.setupUi(self) self.show() self.coeff = [] self.readInput() self.ui.clearBtn.clicked.connect(self.ui.inputFld.clear)
def __init__(self): super().__init__() self.ui=Ui_MainWindow() self.ui.setupUi(self) self.setWindowIcon(QIcon(":\icons/num.jpg")) self.ui.txt_kalanhak.setText(str(self.kalan_hak + 1)) self.ui.txt_tahmin.returnPressed.connect(self.tahminet) self.ui.btn_yenioyun.clicked.connect(self.yeniOyun)
def __init__(self): super(ApplicationWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.timer = QtCore.QTimer() self.timer.setInterval(10) self.timer.timeout.connect(self.pan) self.timer.start()
def __init__(self): super(eitMain, self).__init__() self.ui = Ui_MainWindow() #Opens the main window. self.ui.setupUi(self) self.ui.searchBtn.clicked.connect( self.charSearch) #this is the search button. self.ui.actionExit.triggered.connect( QApplication.quit) #This is the quit option in the menu bar.
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.progressBar.setRange(0, 100) self.ui.progressBar.setValue(10) self.ui.horizontalSlider.setValue(35) self.ui.calendarWidget.setSelectedDate(QtCore.QDate(1993, 5, 5)) self.ui.pushButton.clicked.connect(self.btn_click)
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.label.setFont(QtGui.QFont('SansSerif', 30)) self.ui.label.setGeometry(QtCore.QRect( 10, 10, 200, 200)) # изменить геометрию ярлыка self.ui.pushButton.clicked.connect(self.move_label)
def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.comboBox.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_2.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_3.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_4.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_5.currentIndexChanged.connect(self.updateLabel) self.ui.comboBox_6.currentIndexChanged.connect(self.updateLabel)
def __init__(self, model: MainModel, controller: MainController): super().__init__() self.controller = controller self.model = model self.currentBlock = "" self.ui = Ui_MainWindow() self.ui.setupUi(self) self.saveControls() self.setupButtons() self.model.subscribe_update_function(self.updateFilenames)
def __init__(self, dialog): Ui_MainWindow.__init__(self) self.setupUi(dialog) self.plotButtonStart.clicked.connect(self.plotStart) self.plotButtonEnd.clicked.connect(self.plotEnd) self.PlotStart = GetLogData('Start') self.PlotEnd = GetLogData('End') self.horizontalSlider.setMaximum(self.getLogLength())
class interface(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.text=None self.scroll = QScrollArea() self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.ui.setupUi(self) self.grid = QGridLayout() self.ui.label.setLayout(self.grid) self.list_img=[] self.ui.pushButton.clicked.connect(self.search) #self.create_labels(self.list_img) def search(self): self.text=self.ui.textEdit.toPlainText() self.get_img_database(self.text) if (len(self.text)!=0): self.list_img = self.get_img_database(self.text) if (len(self.list_img)==0): QMessageBox.warning(self, 'Error', 'There is no image about search key') else: self.create_labels(self.list_img) else: QMessageBox.warning(self, 'Error', 'There is no search key') def location(self,i): y=int(i/4) x=int(i%4) return x,y def create_labels(self,list): for i in reversed(range(self.grid.count())): self.grid.itemAt(i).widget().setParent(None) for i in range(0,len(list)): label1=QLabel() label1.setAlignment(Qt.AlignCenter) req = Request(list[i],headers={'User-Agent': 'Mozilla/5.0'}) url_data = urllib2.urlopen(req).read() self.pm = QPixmap() #.scaled(250, 250, Qt.KeepAspectRatio,Qt.SmoothTransformation) self.pm.loadFromData(url_data) label1.setPixmap(self.pm) x,y=self.location(i) self.grid.addWidget(label1, y, x) def get_img_database(self,key): cluster = MongoClient("mongodb+srv://muho:84437**[email protected]/muho?retryWrites=true&w=majority") db = cluster["muho"] collection = db["images"] regx = re.compile("{}".format(key), re.IGNORECASE) collections = collection.find({"caption": regx}) url_list=[] for x in collections: if "https" in x["url"]: if (len(url_list)<20): url_list.append(x['url']) return url_list
def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.text=None self.scroll = QScrollArea() self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.ui.setupUi(self) self.grid = QGridLayout() self.ui.label.setLayout(self.grid) self.list_img=[] self.ui.pushButton.clicked.connect(self.search)
def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.number_string = '0' # falta-me criar o grupo dos botões no designer for button in self.ui.digits.buttons(): button.clicked.connect(self.add_digit) self.show()
def __init__(self): super().__init__() #loadUi("design.ui", self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setWindowTitle("yet another title (im bad at names)") self.ui.MplWidget.canvas.axes.format_coord = lambda x, y: "" self.addToolBar(2, NavigationToolbar2QT(self.ui.MplWidget.canvas, self)) self.ui.MplWidget.canvas.mpl_connect("motion_notify_event", self.handle_mouse_moved) self.draw_graph()
def __init__(self): super(Window, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) # Привязка обработчика на кнопку загрузки фотографии. self.ui.loadButton.clicked.connect(self.load_file) # Привязка обработчика на кнопку "найти очаг". self.ui.findStrokeButton.clicked.connect(self.process_image) # Привязка обработчика на кнопку скачивания фотографии. self.ui.downloadButton.clicked.connect(self.download_file)
class mywindow(QtWidgets.QMainWindow): def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.label.setFont(QtGui.QFont('SansSerif', 30)) self.ui.label.setGeometry(QtCore.QRect( 10, 10, 200, 200)) # изменить геометрию ярлыка self.ui.pushButton.clicked.connect(self.move_label) def _move_second_label(self): while True: x = self.ui.label.x() y = self.ui.label.y() rand_x = random.randint(-4, 4) rand_y = random.randint(-4, 4) self.ui.label.move(x + rand_x, y + rand_y) time.sleep(0.1) def _move_first_label(self): while True: x = self.ui.label_2.x() y = self.ui.label_2.y() rand_x = random.randint(-8, 8) rand_y = random.randint(-8, 8) self.ui.label_2.move(x + rand_x, y + rand_y) time.sleep(0.1) def _move_third_label(self): while True: x = self.ui.label_2.x() y = self.ui.label_2.y() rand_x = random.randint(-10, 10) rand_y = random.randint(-10, 10) self.ui.label_3.move(x + rand_x, y + rand_y) time.sleep(0.1) def move_label(self): threading.Thread(target=(self._move_first_label)).start() threading.Thread(target=(self._move_second_label)).start() threading.Thread(target=(self._move_third_label)).start()
class mywindow(QtWidgets.QMainWindow): def __init__(self): super(mywindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.mosStyleLable.setText("") self.ui.petStyleLabe.setText("") self.ui.splitBtn.clicked.connect(self.splitBtn_clicked) def splitBtn_clicked(self): self.ui.mosStyleLable.setText( MoscowSpliter(self.ui.inputTextField.toPlainText())) self.ui.petStyleLabe.setText( PeterSpliter(self.ui.inputTextField.toPlainText()))
class Calculator(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.number_string = '0' # falta-me criar o grupo dos botões no designer for button in self.ui.digits.buttons(): button.clicked.connect(self.add_digit) self.show() def add_digit(self): number = self.sender() self.ui.LCD.display(self.number_string)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setFixedSize(857, 716) self.setWindowTitle("LALR Parser") self.init() QtCore.QObject.connect(self.ui.action_Open, QtCore.SIGNAL("triggered()"), self.open_file) self.ui.action_Exit.triggered.connect(self.exit_app) self.ui.display.clicked.connect(self.disp) self.ui.first.clicked.connect(self.disp_first) self.ui.lr1.clicked.connect(self.disp_lr1_states) self.ui.lalr.clicked.connect(self.disp_lalr_states) self.ui.parse_table.clicked.connect(self.disp_parse_table) self.ui.plainTextEdit.textChanged.connect(self.check_changed) self.ui.parse.clicked.connect(self.disp_parsing) self.ui.actionAuthor.triggered.connect(self.disp_author)
def __init__(self, loop, config): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.ui.txt_log.insertPlainText('Файл настроек загружен.') self.prefs_window = None self.ui.menu_exit.triggered.connect(self._exit) self.ui.menu_preferences.triggered.connect(self.prefs_open) self.ui.menu_open.triggered.connect(self.open_dialog) self.ui.menu_save.triggered.connect(self.save) self.ui.menu_save_as.triggered.connect(self.save_as) self.ui.menu_create.triggered.connect(self.clear_numbers) self.ui.btn_exit.clicked.connect(self._exit) self.ui.btn_send.clicked.connect(self.send) self.loop = loop
class MainFrame(QtGui.QMainWindow, Ui_MainWindow): def __init__(self, loop, config): super().__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.config = config self.ui.txt_log.insertPlainText('Файл настроек загружен.') self.prefs_window = None self.ui.menu_exit.triggered.connect(self._exit) self.ui.menu_preferences.triggered.connect(self.prefs_open) self.ui.menu_open.triggered.connect(self.open_dialog) self.ui.menu_save.triggered.connect(self.save) self.ui.menu_save_as.triggered.connect(self.save_as) self.ui.menu_create.triggered.connect(self.clear_numbers) self.ui.btn_exit.clicked.connect(self._exit) self.ui.btn_send.clicked.connect(self.send) self.loop = loop def _exit(self): sys.exit() def open_dialog(self): file_name = QtGui.QFileDialog.getOpenFileName(self, "Открыть файл списка номеров", "", "text file (*.txt)") if os.path.exists(file_name): self.ui.txt_sms_num.clear() with open(file_name, 'r') as f: self.ui.txt_sms_num.insertPlainText(f.read()) self.response_decode((5, file_name)) def save(self): file_name = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + '.txt' cat = os.path.split(os.path.abspath(__file__))[0] full_path = os.path.join(cat, file_name) with open(full_path, 'w') as f: f.write(self.ui.txt_sms_num.toPlainText()) self.response_decode((6, file_name)) def save_as(self): file_name = QtGui.QFileDialog.getSaveFileName(self, "Сохранить файл с номерами как", "", "text file (*.txt)") cat = os.path.split(os.path.abspath(__file__))[0] full_path = os.path.join(cat, file_name) with open(full_path, 'w') as f: f.write(self.ui.txt_sms_num.toPlainText()) self.response_decode((6, file_name)) def clear_numbers(self): self.ui.txt_sms_num.clear() def prefs_open(self): if self.prefs_window is None: self.prefs = Preferences(self.config) self.connect(self.prefs, QtCore.SIGNAL('config(PyQt_PyObject)'), self.reload_config) self.connect(self.prefs, QtCore.SIGNAL("response(PyQt_PyObject)"), self.response_decode) self.prefs.show() def reload_config(self, config): self.config = config def sanitarize_numbers(self): pattern = re.compile(r'\d+', flags=re.IGNORECASE) numbers = list(self.ui.txt_sms_num.toPlainText().split('\n')) phone_numbers = [] for number in numbers: digits = re.findall(pattern, number) fixed_number = '' if len(digits) > 1: for digit in digits: fixed_number += digit phone_numbers.append(fixed_number) elif len(digits) == 1: phone_numbers.append(digits[0]) return phone_numbers def sanitarize_text(self): text = self.ui.txt_sms_text.toPlainText() pattern = re.compile(r'([\"\'])', flags=re.IGNORECASE) r_pattern = re.compile(r'[\"\']', flags=re.IGNORECASE) index = re.findall(pattern, text) if len(index) != 0: for i in range(1, len(index)+1): print(i%2) if i % 2 == 1: text = re.sub(r_pattern, "<<", text, 1) elif i % 2 == 0: text = re.sub(r_pattern, ">>", text, 1) return text def send(self): # Следующие аргументы должны быть загружены из файла в момент инициализации!!! numbers = list(self.ui.txt_sms_num.toPlainText().split('\n')) sms_text = self.ui.txt_sms_text.toPlainText() if self.config['sanitarize'] == 'true': numbers = self.sanitarize_numbers() sms_text = self.sanitarize_text() if numbers[0] == '': self.ui.txt_log.insertPlainText('Не указано ни одного номера телефона для отправки!\n') else: print(sms_text) self.GSM = GSMGateway(self.loop,(self.config['username'], self.config['password']), self.config['gateway'], SIMSlot=self.config['simslot'], numbers_list=numbers, text=sms_text) self.connect(self.GSM, QtCore.SIGNAL("response(PyQt_PyObject)"), self.response_decode) self.GSM.start() def response_decode(self, response): stage, data = response if stage == 0: if data == 'Connection established': self.ui.txt_log.insertPlainText('\nСоединение с шлюзом установлено успешно.') else: self.ui.txt_log.insertPlainText('\nНевозможно установить соединение со шлюзом.') elif stage == 1: if 'Success' in data: self.ui.txt_log.insertPlainText('\nДанные авторизации приняты') else: self.ui.txt_log.insertPlainText('\nШлюз отверг запрос авторизации') elif stage == 2: pattern = re.compile(r"\w+:\s?(\d+)", flags=re.IGNORECASE) if 'failed' in data: number = re.findall(pattern, data)[0] self.ui.txt_log.insertPlainText('\nОшибка отправки СМС на номер: %s' % number) elif 'Response: Follows' in data: number = re.findall(pattern, data)[0] self.ui.txt_log.insertPlainText('\nСМС отправлена на номер: %s' % number) #------------------------------------------------------------------------------------- elif stage == 5: self.ui.txt_log.insertPlainText('\nЗагружен файл списка номеров: %s' % data) elif stage == 6: self.ui.txt_log.insertPlainText('\nСохранен файл списка номеров: %s' % data) elif stage == 7: self.ui.txt_log.insertPlainText('\nФайл настроек изменен: %s' % data)
class parser(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setFixedSize(857, 716) self.setWindowTitle("LALR Parser") self.init() QtCore.QObject.connect(self.ui.action_Open, QtCore.SIGNAL("triggered()"), self.open_file) self.ui.action_Exit.triggered.connect(self.exit_app) self.ui.display.clicked.connect(self.disp) self.ui.first.clicked.connect(self.disp_first) self.ui.lr1.clicked.connect(self.disp_lr1_states) self.ui.lalr.clicked.connect(self.disp_lalr_states) self.ui.parse_table.clicked.connect(self.disp_parse_table) self.ui.plainTextEdit.textChanged.connect(self.check_changed) self.ui.parse.clicked.connect(self.disp_parsing) self.ui.actionAuthor.triggered.connect(self.disp_author) def init(self): self.grammar = [] self.augment_grammar = [] self.first = {} self.term = [] self.non_term = [] self.states = [] self.lalr_states = [] self.parse_table = [] State.state_count = -1 lalrState.state_count = 0 def check_changed(self): self.changed = True def open_file(self): file = QtGui.QFileDialog.getOpenFileName(self, "Open Grammar file") file = open(file, "r") self.ui.plainTextEdit.setPlainText(file.read()) file.close() self.ui.lineEdit.clear() self.ui.textBrowser.clear() def read_input(self): self.init() lines = self.ui.plainTextEdit.toPlainText() # string lines_list = lines.split("\n") # converting into list of lines try: for line in lines_list: line = line.replace(" ", "") if line != "": line_list = line.split("->") if line_list[0].isupper() and line_list[1] != "": if "|" in line_list[1]: prod_list = line_list[1].split("|") for prod in prod_list: self.grammar.append([line_list[0], prod]) else: self.grammar.append(line_list) else: self.ui.textBrowser.clear() self.ui.textBrowser.setText("Invalid grammar") self.grammar = [] if self.grammar != []: term_and_nonterm(self.grammar, self.term, self.non_term) calculate_first(self.grammar, self.first, self.term, self.non_term) get_augmented(self.grammar, self.augment_grammar) find_states(self.states, self.augment_grammar, self.first, self.term, self.non_term) combine_states(self.lalr_states, self.states) get_parse_table(self.parse_table, self.lalr_states, self.augment_grammar) self.changed = False except (KeyError, IndexError): self.ui.textBrowser.clear() self.ui.textBrowser.setText("Invalid grammar") self.init() ############################ DISPLAY ################################ def disp(self): self.ui.textBrowser.clear() if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: for prod in self.grammar: s = prod[0] + " -> " + prod[1] + "\n" self.ui.textBrowser.append(s) self.ui.textBrowser.append( "\nNon Terminals : " + " ".join(self.non_term) + "\nTerminals : " + " ".join(self.term) ) def disp_first(self): if self.first == {} or self.changed: self.read_input() if self.first != {}: self.ui.textBrowser.clear() for key, value in self.first.items(): if key in self.non_term: self.ui.textBrowser.append("First(" + key + ") : " + " ".join(value) + "\n") def disp_lr1_states(self): if self.states == [] or self.changed: self.read_input() if self.states != []: self.ui.textBrowser.clear() self.ui.textBrowser.append( "Number of LR(1) states : " + str(self.states[len(self.states) - 1].state_num + 1) ) for state in self.states: self.ui.textBrowser.append("----------------------------------------------------------------") if state.state_num == 0: self.ui.textBrowser.append("\nI" + str(state.state_num) + " : " + "\n") else: self.ui.textBrowser.append( "\nI" + str(state.state_num) + " : " + " goto ( I" + str(state.parent[0]) + " -> '" + str(state.parent[1]) + "' )\n" ) for item in state.state: self.ui.textBrowser.append(item[0] + " -> " + item[1] + " , [ " + " ".join(item[2]) + " ]") if state.actions != {}: self.ui.textBrowser.append("\nActions : ") for k, v in state.actions.items(): self.ui.textBrowser.insertPlainText(str(k) + " -> " + str(abs(v)) + "\t") def disp_lalr_states(self): if self.lalr_states == [] or self.changed: self.read_input() if self.lalr_states != []: self.ui.textBrowser.clear() self.ui.textBrowser.append("Number of LALR states : " + str(lalrState.state_count)) for state in self.lalr_states: self.ui.textBrowser.append("----------------------------------------------------------------") if state.state_num == 0: self.ui.textBrowser.append( "\nI" + str(state.state_num) + " : " + "\tGot by -> " + str(state.parent_list) + "\n" ) else: self.ui.textBrowser.append( "\nI" + str(state.state_num) + " : " + " goto ( I" + str(state.parent[0]) + " -> '" + str(state.parent[1]) + "' )" + "\tGot by -> " + str(state.parent_list) + "\n" ) for item in state.state: self.ui.textBrowser.append(item[0] + " -> " + item[1] + " , [ " + " ".join(item[2]) + " ]") if state.actions != {}: self.ui.textBrowser.append("\nActions : ") for k, v in state.actions.items(): self.ui.textBrowser.insertPlainText(str(k) + " -> " + str(abs(v)) + "\t") def disp_parse_table(self): if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: self.ui.textBrowser.clear() all_symb = [] all_symb.extend(self.term) all_symb.append("$") all_symb.extend(self.non_term) if "e" in all_symb: all_symb.remove("e") head = "{0:12}".format(" ") for X in all_symb: head = head + "{0:12}".format(X) self.ui.textBrowser.setText(head + "\n") s = "------------" * len(all_symb) self.ui.textBrowser.append(s) for index, state in enumerate(self.parse_table): line = "{0:<12}".format(index) for X in all_symb: if X in state.keys(): if X in self.non_term: action = state[X] else: if state[X] > 0: action = "s" + str(state[X]) elif state[X] < 0: action = "r" + str(abs(state[X])) elif state[X] == 0: action = "accept" line = line + "{0:<12}".format(action) else: line = line + "{0:<12}".format("") self.ui.textBrowser.append(line) self.ui.textBrowser.append(s) def disp_parsing(self): if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: self.ui.textBrowser.clear() line_input = self.ui.lineEdit.text() self.parse(self.parse_table, self.augment_grammar, line_input) def parse(self, parse_table, augment_grammar, inpt): inpt = list(inpt + "$") stack = [0] a = inpt[0] try: head = "{0:40} {1:40} {2:40}".format("Stack", "Input", "Actions") self.ui.textBrowser.setText(head) while True: string = "\n{0:<40} {1:<40} ".format(stack, "".join(inpt)) s = stack[len(stack) - 1] action = parse_table[s][a] if action > 0: inpt.pop(0) stack.append(action) self.ui.textBrowser.append(string + "Shift " + a + "\n") a = inpt[0] elif action < 0: prod = augment_grammar[-action] if prod[1] != "e": for i in range(len(prod[1])): stack.pop() t = stack[len(stack) - 1] stack.append(parse_table[t][prod[0]]) self.ui.textBrowser.append(string + "Reduce " + prod[0] + " -> " + prod[1] + "\n") elif action == 0: self.ui.textBrowser.append("ACCEPT\n") break except KeyError: self.ui.textBrowser.append("\n\nERROR\n") def exit_app(self): QtGui.QApplication.quit() def disp_author(self): QtGui.QMessageBox.information( self, "About", "LALR PARSER\n\nAuthors:\n Akshay Hebbar Y S\t\n Bharath Kumar N B\t\n Nikil Upadhyaya\t\n Alok S\t", QtGui.QMessageBox.Ok, )
class parser(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QWidget.__init__(self,parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setFixedSize(852, 671) self.setWindowTitle("LALR Parser") self.init() QtCore.QObject.connect(self.ui.action_Open,QtCore.SIGNAL("triggered()"),self.open_file) self.ui.action_Exit.triggered.connect(self.exit_app) self.ui.display.clicked.connect(self.disp) self.ui.first.clicked.connect(self.disp_first) self.ui.lr1.clicked.connect(self.disp_lr1_states) self.ui.lalr.clicked.connect(self.disp_lalr_states) self.ui.parse_table.clicked.connect(self.disp_parse_table) self.ui.plainTextEdit.textChanged.connect(self.check_changed) self.ui.parse.clicked.connect(self.disp_parsing) self.ui.actionAuthor.triggered.connect(self.disp_author) def init(self): self.grammar = [] self.augment_grammar = [] self.first = {} self.term = [] self.non_term = [] self.states = [] self.lalr_states = [] self.parse_table = [] State.state_count = -1 lalrState.state_count = 0 def check_changed(self): self.changed = True def open_file(self): file = QtGui.QFileDialog.getOpenFileName(self,'Open Grammar file') if file != '': file = open(file,'r') self.ui.plainTextEdit.setPlainText(file.read()) file.close() self.ui.lineEdit.clear() self.ui.textBrowser.clear() def read_input(self): self.init() lines = self.ui.plainTextEdit.toPlainText() #string lines_list = lines.split('\n') #converting into list of lines try: for line in lines_list: line = line.replace(' ' ,'') if line != '': line_list = line.split('->') if line_list[0].isupper() and line_list[1] != '': if '|' in line_list[1]: prod_list = line_list[1].split('|') for prod in prod_list: self.grammar.append([line_list[0],prod]) else: self.grammar.append(line_list) else: self.ui.textBrowser.clear() self.ui.textBrowser.setText("Invalid grammar") self.grammar = [] if self.grammar != []: term_and_nonterm(self.grammar,self.term,self.non_term) calculate_first(self.grammar,self.first,self.term,self.non_term) get_augmented(self.grammar,self.augment_grammar) find_states(self.states,self.augment_grammar,self.first,self.term,self.non_term) combine_states(self.lalr_states, self.states) get_parse_table(self.parse_table,self.lalr_states,self.augment_grammar) self.changed = False except (KeyError, IndexError): self.ui.textBrowser.clear() self.ui.textBrowser.setText("Invalid grammar") self.init() ############################ DISPLAY ################################ def disp(self): self.ui.textBrowser.clear() if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: for prod in self.grammar: s = prod[0]+ ' -> ' + prod[1]+'\n' self.ui.textBrowser.append(s) self.ui.textBrowser.append("\nNon Terminals : "+' '.join(self.non_term)+"\nTerminals : "+' '.join(self.term)) def disp_first(self): if self.first == {} or self.changed: self.read_input() if self.first != {}: self.ui.textBrowser.clear() for nonterm in self.non_term: self.ui.textBrowser.append('First('+nonterm+') : '+' '.join(self.first[nonterm])+'\n') def disp_lr1_states(self): if self.states == [] or self.changed: self.read_input() if self.states != []: self.ui.textBrowser.clear() self.ui.textBrowser.append("Number of LR(1) states : "+ str(self.states[len(self.states)-1].state_num + 1)) for state in self.states: self.ui.textBrowser.append('----------------------------------------------------------------') if state.state_num == 0: self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+'\n') else: self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+' goto ( I'+str(state.parent[0])+" -> '"+ str(state.parent[1]) +"' )\n") for item in state.state: self.ui.textBrowser.append(item[0]+ ' -> ' + item[1]+' , [ '+ ' '.join(item[2])+' ]') if state.actions != {}: self.ui.textBrowser.append('\nActions : ') for k,v in state.actions.items(): self.ui.textBrowser.insertPlainText(str(k)+' -> '+str(abs(v))+'\t') def disp_lalr_states(self): if self.lalr_states == [] or self.changed: self.read_input() if self.lalr_states != []: self.ui.textBrowser.clear() self.ui.textBrowser.append("Number of LALR states : " + str(lalrState.state_count)) for state in self.lalr_states: self.ui.textBrowser.append('----------------------------------------------------------------') if state.state_num == 0: self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+'\tGot by -> '+str(state.parent_list)+'\n') else: self.ui.textBrowser.append("\nI"+str(state.state_num)+' : '+' goto ( I'+str(state.parent[0])+" -> '"+ str(state.parent[1]) +"' )"+'\tGot by -> '+str(state.parent_list)+'\n') for item in state.state: self.ui.textBrowser.append(item[0]+ ' -> ' + item[1]+' , [ '+ ' '.join(item[2])+' ]') if state.actions != {}: self.ui.textBrowser.append('\nActions : ') for k,v in state.actions.items(): self.ui.textBrowser.insertPlainText(str(k)+' -> '+str(abs(v))+'\t') def disp_parse_table(self): if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: self.ui.textBrowser.clear() all_symb = [] all_symb.extend(self.term) all_symb.append('$') all_symb.extend(self.non_term) if 'e' in all_symb: all_symb.remove('e') head = '{0:12}'.format(' ') for X in all_symb: head = head + '{0:12}'.format(X) self.ui.textBrowser.setText(head+'\n') s = '------------'*len(all_symb) self.ui.textBrowser.append(s) for index, state in enumerate(self.parse_table): line = '{0:<12}'.format(index) for X in all_symb: if X in state.keys(): if X in self.non_term: action = state[X] else: if state[X] > 0: action = 's' + str(state[X]) elif state[X] < 0: action = 'r' + str(abs(state[X])) elif state[X] == 0: action = 'accept' line = line + '{0:<12}'.format(action) else: line = line + '{0:<12}'.format("") self.ui.textBrowser.append(line) self.ui.textBrowser.append(s) def disp_parsing(self): if self.grammar == [] or self.changed: self.read_input() if self.grammar != []: self.ui.textBrowser.clear() line_input = self.ui.lineEdit.text() self.parse(self.parse_table, self.augment_grammar, line_input) def parse(self,parse_table,augment_grammar,inpt): inpt = list(inpt+'$') stack = [0] a = inpt[0] try: head = '{0:40} {1:40} {2:40}'.format("Stack","Input", "Actions") self.ui.textBrowser.setText(head) while True: string = '\n{0:<40} {1:<40} '.format(stack, ''.join(inpt)) s = stack[len(stack)-1] action = parse_table[s][a] if action > 0: inpt.pop(0) stack.append(action) self.ui.textBrowser.append(string + 'Shift ' + a+ '\n') a = inpt[0] elif action < 0: prod = augment_grammar[-action] if prod[1] != 'e': for i in prod[1]: stack.pop() t = stack[len(stack)-1] stack.append(parse_table[t][prod[0]]) self.ui.textBrowser.append(string + 'Reduce ' + prod[0] + ' -> '+ prod[1] + '\n') elif action == 0: self.ui.textBrowser.append('ACCEPT\n') break except KeyError: self.ui.textBrowser.append('\n\nERROR\n') def exit_app(self): QtGui.QApplication.quit() def disp_author(self): QtGui.QMessageBox.information(self, "About", "LALR PARSER\n\nAuthor:\n Akshay Hebbar Y S\t", QtGui.QMessageBox.Ok)