import sys import random from PySide6 import QtCore, QtWidgets, QtGui import time class TitleScreen(QtWidgets.QWidget): def __init__(self): super().__init__() self.q = QtGui.QScreen.availableGeometry(QtWidgets.QApplication.primaryScreen()) self.part1 = Part1() self.part2 = Part2() self.button = QtWidgets.QPushButton(self) self.button.setGeometry(QtCore.QRect(20, 20, 40, 40)) self.button.setText("Esc") self.text = QtWidgets.QLabel(self) self.text.setText( "
Лабораторная " "работа 3.5.1
Исследование плазмы газового " "разряда
") self.text.setGeometry(QtCore.QRect(self.q.width() // 3 - 250, self.q.height() // 2 - 50, 500, 100)) self.vline = QtWidgets.QFrame(self) self.vline.setFrameShape(QtWidgets.QFrame.VLine) self.vline.setGeometry(QtCore.QRect(2 * self.q.width() // 3, 0, 10, self.q.height() + 40)) self.hline = QtWidgets.QFrame(self) self.hline.setFrameShape(QtWidgets.QFrame.HLine) self.hline.setGeometry(QtCore.QRect(2 * self.q.width() // 3 + 5, self.q.height() // 2, self.q.width() // 3, 40)) self.label1 = QtWidgets.QLabel(self) self.label1.setText( "ЧАСТЬ " "I
Вольт-амперная характеристика газового " "разряда
") self.label1.setGeometry(QtCore.QRect(5 * self.q.width() // 6 - 150, self.q.height() // 4 - 40, 300, 80)) self.label2 = QtWidgets.QLabel(self) self.label2.setText( "ЧАСТЬ " "II
Зондовые характеристики " "плазмы
") self.label2.setGeometry(QtCore.QRect(5 * self.q.width() // 6 - 150, 3 * self.q.height() // 4 - 40, 300, 80)) self.button1 = QtWidgets.QPushButton(self) self.button1.setGeometry(QtCore.QRect(5 * self.q.width() // 6 - 40, self.q.height() // 4 + 80, 80, 40)) self.button1.setText("Начать") self.button2 = QtWidgets.QPushButton(self) self.button2.setGeometry(QtCore.QRect(5 * self.q.width() // 6 - 40, 3 * self.q.height() // 4 + 80, 80, 40)) self.button2.setText("Начать") self.button.clicked.connect(self.esc) self.button1.clicked.connect(self.open_part1) self.button2.clicked.connect(self.open_part2) @QtCore.Slot() def esc(self): self.close() def open_part1(self): self.part1.showFullScreen() self.close() def open_part2(self): self.part2.showFullScreen() self.close() class Part1(QtWidgets.QWidget): def __init__(self): super().__init__() self.started = False self.q = QtGui.QScreen.availableGeometry(QtWidgets.QApplication.primaryScreen()) h = self.q.height() * 0.2 self.button = QtWidgets.QPushButton(self) self.button.setGeometry(QtCore.QRect(20, 20, 40, 40)) self.button.setText("Esc") self.title = QtWidgets.QLabel(self) self.title.setText( "ЧАСТЬ " "I
Вольт-амперная характеристика газового " "разряда
") self.title.setGeometry(QtCore.QRect(self.q.width() // 2 - 200, 20, 400, 80)) self.back_button = QtWidgets.QPushButton(self) self.back_button.setGeometry(QtCore.QRect(20, self.q.height() - 20, 80, 40)) self.back_button.setText("Назад") self.pixmap0 = QtGui.QPixmap('Aspect-ratio-4x3.png') self.pixmap = self.pixmap0.scaledToHeight(3 * h) self.plot1 = QtWidgets.QLabel(self) self.plot1.setPixmap(self.pixmap) self.plot1.setGeometry(QtCore.QRect(h, h + 20, 4 * h, 3 * h)) self.text = QtWidgets.QLabel(self) self.text.setText("Перед проведением измерений ВАХ " "газового разряда
проверьте " "подключение вольтметра V1 и амперметра A1," "
а также убедитесь, " "что переключатель П1 находится в положении I.
При проведении измерений медленно увеличивайте выходное" "
напряжение ВИП до достижения " "максимального значения тока" "
через амперметр " "А1 (не более 5 мА), затем проведите измерения " "
в обратную сторону.
График " "Iр(Uр) будет строиться автоматически,
после завершения измерений можно сохранить полученные
значения " "и график.
") self.text.setGeometry(QtCore.QRect(6 * h, h + 20, 3 * h, 2 * h + 20)) self.start_btn = QtWidgets.QPushButton(self) self.start_btn.setText("Начать измерения") self.start_btn.setGeometry(QtCore.QRect(7.5 * h - 150, 4 * h - 50, 120, 30)) self.reset_btn = QtWidgets.QPushButton(self) self.reset_btn.setText("Сбросить") self.reset_btn.setGeometry(QtCore.QRect(7.5 * h + 30, 4 * h - 50, 120, 30)) self.save_btn = QtWidgets.QPushButton(self) self.save_btn.setText("Сохранить") self.save_btn.setGeometry(QtCore.QRect(7.5 * h - 60, 4 * h, 120, 30)) self.save_btn.hide() self.button.clicked.connect(self.esc) self.back_button.clicked.connect(self.back) self.start_btn.clicked.connect(self.start_stop) self.reset_btn.clicked.connect(self.reset) @QtCore.Slot() def esc(self): self.close() def back(self): self.w = TitleScreen() self.w.showFullScreen() self.close() def start_stop(self): if not self.started: self.start_btn.setText("Стоп") self.started = True self.save_btn.hide() else: self.start_btn.setText("Продолжить") self.started = False self.save_btn.show() def reset(self): self.started = False self.start_btn.setText("Начать измерения") self.save_btn.hide() class Part2(QtWidgets.QWidget): def __init__(self): super().__init__() self.started = False self.n = 0 self.q = QtGui.QScreen.availableGeometry(QtWidgets.QApplication.primaryScreen()) h = self.q.height() * 0.2 self.button = QtWidgets.QPushButton(self) self.button.setGeometry(QtCore.QRect(20, 20, 40, 40)) self.button.setText("Esc") self.title = QtWidgets.QLabel(self) self.title.setText( "ЧАСТЬ " "II
Зондовые характеристики " "плазмы
") self.title.setGeometry(QtCore.QRect(self.q.width() // 2 - 200, 20, 400, 80)) self.back_button = QtWidgets.QPushButton(self) self.back_button.setGeometry(QtCore.QRect(20, self.q.height() - 20, 80, 40)) self.back_button.setText("Назад") self.pixmap0 = QtGui.QPixmap('Aspect-ratio-4x3.png') self.pixmap = self.pixmap0.scaledToHeight(3 * h) self.plot1 = QtWidgets.QLabel(self) self.plot1.setPixmap(self.pixmap) self.plot1.setGeometry(QtCore.QRect(h, h + 20, 4 * h, 3 * h)) self.text = QtWidgets.QLabel(self) self.text.setText("Перед проведением измерений " "зондовых характеристик
плазмы " "проверьте подключение вольтметра V2
и амперметров A1 и А2, а также убедитесь," "
что переключатель П1 " "находится в положении II.
Установите " "требуемый согласно методике разрядный ток,
не изменяйте его в момент проведения серии измерений.
При помощи потенциометра измерьте " "ВАХ
в максимальном диапазоне, " "учтите,
что полярность можно менять " "с помощью
переключателя " "П2 только при токе Iз= 0.
График Iз(Uз) будет строиться автоматически," "
после завершения всех серий " "измерений
можно сохранить полученные " "значения и график.
") self.text.setGeometry(QtCore.QRect(6 * h, h + 20, 3 * h, 2 * h + 20)) self.start_btn = QtWidgets.QPushButton(self) self.start_btn.setText("Добавить серию") self.start_btn.setGeometry(QtCore.QRect(7.5 * h - 150, 4 * h - 50, 120, 30)) self.delete_btn = QtWidgets.QPushButton(self) self.delete_btn.setText("Удалить серию") self.delete_btn.setGeometry(QtCore.QRect(7.5 * h + 30, 4 * h - 50, 120, 30)) self.delete_btn.hide() self.save_btn = QtWidgets.QPushButton(self) self.save_btn.setText("Сохранить") self.save_btn.setGeometry(QtCore.QRect(7.5 * h - 60, 4 * h, 120, 30)) self.save_btn.hide() self.button.clicked.connect(self.esc) self.back_button.clicked.connect(self.back) self.start_btn.clicked.connect(self.start_stop) self.delete_btn.clicked.connect(self.delete) @QtCore.Slot() def esc(self): self.close() def back(self): self.w = TitleScreen() self.w.showFullScreen() self.close() def start_stop(self): if not self.started: self.start_btn.setText("Стоп") self.started = True self.save_btn.hide() self.n += 1 else: self.start_btn.setText("Добавить серию") self.started = False self.save_btn.show() self.delete_btn.show() def delete(self): self.started = False self.start_btn.setText("Добавить серию") self.n -= 1 if self.n == 0: self.save_btn.hide() self.delete_btn.hide() if __name__ == "__main__": app = QtWidgets.QApplication([]) widget = TitleScreen() widget.showFullScreen() sys.exit(app.exec())