LINUX.ORG.RU

Сообщения Darkness

 

PyQt5, QLineEdit передача информации в функцию..

Всем добрый вечер, возникла проблема с передачей информации из QLineEdit в функцию в другом .py файле. В строке вводится IP адрес, и этот адрес должен быть перенаправлен в функцию run,в переменную start_ip. (Функция run запускается при нажатии на кнопку Search) В функции run происходит проверка ip адреса, есть он в списке nodes или нет, если же нет, можно ли сделать так, чтобы выскакивало сообщение, что такого IP-адреса в списке нет?

import sys
from PyQt5.QtWidgets import (QMainWindow, QApplication, QLineEdit, QDesktopWidget, QMessageBox, QToolTip, QPushButton,
                             QAction, QLabel, QGridLayout, QWidget, QTextEdit, QFileDialog)
from PyQt5.QtGui import QIcon, QFont
from graph.run import run


class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.form_widget = FormWidget(self)
        self.setCentralWidget(self.form_widget)

        exitAction = QAction(QIcon('D:/Programming/Python/mo-mo/GUI/icon/exit.png'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit')
        exitAction.triggered.connect(self.close)
        self.statusBar()
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        exitAction = QAction(QIcon('D:/Programming/Python/mo-mo/GUI/icon/exit.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(self.close)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        self.resize(500, 300)
        self.center()
        self.setWindowTitle('Spider')
        self.setWindowIcon(QIcon('D:/Programming/Python/mo-mo/GUI/icon/1.png'))
        self.show()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', "Are you sure to quit?", QMessageBox.Yes | QMessageBox.No,
                                     QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


class FormWidget(QWidget):
    def __init__(self, parent):
        super(FormWidget, self).__init__(parent)
        QToolTip.setFont(QFont('SansSerif', 10))
        name = QLabel('Selected files:')
        file_vulnerability = QLabel('File vulnerability:')
        link_file = QLabel('Link file:')
        network_topology = QLabel('Network topology:')
        start_ip = QLabel('Start IP:')
        self.file_vulnerabilityEdit = QTextEdit()
        self.link_fileEdit = QTextEdit()
        self.network_topologyEdit = QTextEdit()
        start_ipEdit = QLineEdit()
        browse_1 = QPushButton("Display information", self)
        browse_2 = QPushButton("Display information", self)
        browse_3 = QPushButton("Display information", self)
        search = QPushButton("Search", self)
        grid = QGridLayout()
        grid.setSpacing(5)
        grid.addWidget(name, 0, 0)
        grid.addWidget(file_vulnerability, 1, 0)
        grid.addWidget(self.file_vulnerabilityEdit, 2, 0)
        grid.addWidget(browse_1, 3, 0)
        grid.addWidget(link_file, 1, 1)
        grid.addWidget(self.link_fileEdit, 2, 1)
        grid.addWidget(browse_2, 3, 1)
        grid.addWidget(network_topology, 1, 2)
        grid.addWidget(self.network_topologyEdit, 2, 2)
        grid.addWidget(browse_3, 3, 2)
        grid.addWidget(start_ip, 4, 0)
        grid.addWidget(start_ipEdit, 4, 1)
        grid.addWidget(search, 4, 2)

        self.setLayout(grid)
        self.show()

        search.clicked.connect(run)
        browse_1.clicked.connect(self.show1)
        browse_2.clicked.connect(self.show2)
        browse_3.clicked.connect(self.show3)
        start_ipEdit.textChanged[str].connect(self.start)

    def start(self, ip):

    def show1(self):
        fname = QFileDialog.getOpenFileName(self, 'Open file', 'D:/Programming/Python/mo-mo/GUI')[0]

        f = open(fname, 'r')

        with f:
            data = f.read()
            self.file_vulnerabilityEdit.setText(data)

    def show2(self):
        fname = QFileDialog.getOpenFileName(self, 'Open file', 'D:/Programming/Python/mo-mo/GUI')[0]

        f = open(fname, 'r')

        with f:
            data = f.read()
            self.link_fileEdit.setText(data)

    def show3(self):
        fname = QFileDialog.getOpenFileName(self, 'Open file', 'D:/Programming/Python/mo-mo/GUI')[0]

        f = open(fname, 'r')

        with f:
            data = f.read()
            self.network_topologyEdit.setText(data)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    foo = MyMainWindow()
    foo.show()
    sys.exit(app.exec_())



Функция в которую нужно направить start IP:
def run():
    nodes = get_nodes()  # список узлов
    vulnerability_list = get_vulnerability()  # уязвимости
    nodes_info = get_nodes_info(nodes, vulnerability_list)  # инфа об узлах
    network_elements = get_network_elements()  # елементы нашей сети
    ne_info = get_network_elements_info(network_elements, nodes, nodes_info)  # информация об елементах нашей сети
    transition_matrix = create_transition_matrix(network_elements, ne_info)  # матрица переходов

    tm_for_graph = tm_from_str_to_int(transition_matrix)  # преобразуем матрицу переходов

    v_table = vulnerability_table(network_elements, ne_info)  # таблица с уязвимостями вида ip: права

    start_ip = ''
    flag = False
    count = 0
    while not flag and count < 3:
        start_ip = input('Введите ip: ')
        if count == 2:
            print('Это была последняя попытка!')
            return True
        elif nodes.count(start_ip) == 0:
            print('Такого узла не существует.')
            count += 1
        else:
            flag = True

    adjacency_matrix = graph_adjacency_matrix(start_ip, network_elements, v_table,
                                              transition_matrix)  # матрица смежности

    nodes_color = get_nodes_color(network_elements, adjacency_matrix, start_ip)  # получили цвет узлов

    draw_topology(tm_for_graph, network_elements, nodes_color, adjacency_matrix)  # рисуем результат
    return True

 , ,

Darkness
()

Работа с кнопками, PyQt5

Всем привет, пытаюсь присвоить кнопке функцию открытия файла и чтения в QTextEdit, но при нажатии кнопки графическая оболочка закрывается. Функция открытия файла и чтения импортируется из другого файла. Работаю с PyQt5 неделю.. Даётся тяжко, но мне очень нужна ваша помощь..

 class FormWidget(QWidget):
        def __init__(self, parent):
            file_vulnerabilityEdit = QTextEdit()
            browse_1 = QPushButton("Display information", self)
            browse_1.clicked.connect(showDialog)


Импортируемый файл:

 from PyQt5.QtWidgets import (QFileDialog)


def showDialog(self):
    fname = QFileDialog.getOpenFileName(self, 'Open file', 'D:/Programming/Python/mo-mo/GUI')[0]

    f = open(fname, 'r')

    with f:
        data = f.read()
        self.file_vulnerabilityEdit.setText(data) 

 , ,

Darkness
()

RSS подписка на новые темы