Всем добрый вечер, возникла проблема с передачей информации из 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