Глава 5. Разработка графического интерфейса
import sys
import work_file
import pyqtgraph
import pyqtgraph.exporters
from PyQt5 import QtCore, QtGui, QtWidgets
from forma import Ui_Dialog
class MainWindow(QtWidgets.QMainWindow): # создаем свой класс окна,
def __init__(self, parent=None):
# Нужно для доступа к переменным, методам и т.д.
# в файле forma.py
QtWidgets.QWidget.__init__(self, parent) #инициализируем класс
self.ui = Ui_Dialog()
self.ui.setupUi(self) #передаем ему настройки
self.ui.input_file.clicked.connect(self.MyFunction)
self.ui.on_grid.clicked.connect(self.on_grid)
self.ui.off_grid.clicked.connect(self.off_grid)
self.ui.clear_box.clicked.connect(self.clear)
self.ui.open_file.clicked.connect(self.open_file)
self.ui.open_file_2.clicked.connect(self.open_file2)
# очистить окно
def clear(self):
self.ui.graphicsView.clear()
# открываем файлы с данными
def open_file(self):
self.ui.lineEdit.setText(QtGui.QFileDialog.getOpenFileName(self, '*', '. /', 'TXT Files ( *.txt)')[0])
def open_file2(self):
self.ui.lineEdit_2.setText(QtGui.QFileDialog.getOpenFileName(self, '*', '. /', 'TXT Files ( *.txt)')[0])
# отключаем и включаем сетку
def on_grid(self):
self.ui.graphicsView.showGrid(True, True)
def off_grid(self):
self.ui.graphicsView.showGrid(False, False)
def MyFunction(self):
# обработчик исключений (для проверки првильного ввода адреса файла)
try:
if self.ui.lineEdit.text() != '':
self.text = self.ui.lineEdit.text() #считывает имя файла
f = open(self.text)
line = f.read()
x_1, y_1 = work_file.output_values(line)
pen1 = pyqtgraph.mkPen(color='r',width = 3, style=QtCore.Qt.DashLine) #задаем кисть
self.clear()
self.ui.graphicsView.plot(x_1, y_1, pen=pen1) # вывод графика
self.ui.error_1.clear()
except IOError :
self.ui.error_1.setText('Файл не найден')
# поправка на аппаратную функцию
if self.ui.ap_func.isChecked() == True: # проверка чекбокса
f0 = open('hardware.txt')
line0 = f0.read()
h_x, h_y = work_file.output_values(line0)
for i in range(len(h_x)):
for j in range(len(h_x)):
if x_1[i] == h_x[j]:
y_1[i] = y_1[i] * h_y[j]
pen1 = pyqtgraph.mkPen(color='b',width = 3, style=QtCore.Qt.DashLine) # задаем кисть
self.clear()
self.ui.graphicsView.plot(x_1, y_1, pen=pen1) # вывод графика
try:
if self.ui.lineEdit_2.text() != '':
self.text2 = self.ui.lineEdit_2.text()# считывает имя файла
f2 = open(self.text2)
line2 = f2.read()
x_2, y_2 = work_file.output_values(line2)
pen2 = pyqtgraph.mkPen(color='w', width=3, style=QtCore.Qt.DashLine)
self.ui.graphicsView.plot(x_2, y_2, pen=pen2) # вывод графика
self.ui.error_1.clear()
except IOError :
self.ui.error_2.setText('Файл не найден')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication передаем аргументы командной строки
window = MainWindow() # Создаём объект класса ExampleApp
window.show() #показываем окно
sys.exit(app.exec_()) # запускаем приложение
Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!