Работающая qtшка, сделанная под руководством Димы
This commit is contained in:
BIN
PlotterDialog/345678iop.png
Normal file
BIN
PlotterDialog/345678iop.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 340 B |
@@ -1,10 +1,143 @@
|
||||
from PyQt5.QtWidgets import QDialog
|
||||
from PyQt5.QtWidgets import *
|
||||
|
||||
class PlotterDIalog(QDialog):
|
||||
def __init__(self):
|
||||
|
||||
class GraphRequester(QWidget):
|
||||
def __init__(self, nomer_grafika=1):
|
||||
QWidget.__init__(self)
|
||||
layout = QVBoxLayout(self)
|
||||
layout_x = QHBoxLayout()
|
||||
layout_y = QHBoxLayout()
|
||||
layout_close_and_name = QHBoxLayout()
|
||||
self.LineEditGraf = QLineEdit(f"график {nomer_grafika}")
|
||||
NameX = QLabel("X")
|
||||
NameY = QLabel("Y")
|
||||
Name_Close = QPushButton("Закрыть")
|
||||
|
||||
self.LineEditX = QLineEdit()
|
||||
self.LineEditY = QLineEdit()
|
||||
|
||||
layout_x.addWidget(NameX)
|
||||
layout_x.addWidget(self.LineEditX)
|
||||
|
||||
layout_y.addWidget(NameY)
|
||||
layout_y.addWidget(self.LineEditY)
|
||||
|
||||
Name_Close.clicked.connect(lambda: self.setParent(None))
|
||||
|
||||
layout_close_and_name.addWidget(self.LineEditGraf)
|
||||
layout_close_and_name.addWidget(Name_Close)
|
||||
|
||||
layout.addLayout(layout_close_and_name) # Вложения названия и закрыть
|
||||
layout.addLayout(layout_x) # Вложение
|
||||
layout.addLayout(layout_y) # Вложение
|
||||
|
||||
|
||||
class ButtonGroup(QWidget):
|
||||
def __init__(self, category: str, full_names={}, buttons_actions={}, parent=None):
|
||||
super().__init__()
|
||||
self.layout = QVBoxLayout() # Создание основного лаяутв
|
||||
Doplayout = QHBoxLayout()
|
||||
label = QLabel(category)
|
||||
|
||||
self.initUI()
|
||||
self.layout.addWidget(label)
|
||||
for button_name in full_names:
|
||||
button = QPushButton(button_name, self)
|
||||
|
||||
def initUI(self):
|
||||
...
|
||||
button.setFixedWidth(80)
|
||||
button.setToolTip(
|
||||
full_names[button_name]
|
||||
) # Создание подскачоки при наведении
|
||||
|
||||
button.clicked.connect(
|
||||
buttons_actions[button_name]
|
||||
) # Назначение кнопочке действия
|
||||
|
||||
Doplayout.addWidget(button) # отрисовывание кнопок
|
||||
|
||||
self.layout.addLayout(Doplayout)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
# ButtonGroup(
|
||||
# name="Function",
|
||||
# full_names={"a": "A", "b": "B", "c": "C"},
|
||||
# buttons_actions={
|
||||
# "a": lambda: print("A"),
|
||||
# "b": lambda: print("B"),
|
||||
# "c": lambda: None,
|
||||
# },
|
||||
# )
|
||||
|
||||
# GraphRequester(close=lambda x: x)
|
||||
|
||||
|
||||
class PlotDialog(QDialog):
|
||||
def __init__(
|
||||
self,
|
||||
variable_full_names: dict[str, str],
|
||||
function_full_names: dict[str, str],
|
||||
# variable_values: dict[str, np.ndarray],
|
||||
):
|
||||
super().__init__()
|
||||
layout_boss = QVBoxLayout() # главный лояут
|
||||
|
||||
scroll = QScrollArea()
|
||||
scrollWidget = QWidget()
|
||||
|
||||
self.inputs_layout = QVBoxLayout() # лаяут первой трети
|
||||
self.num_of_input = 0 # инициализация первого графика
|
||||
self.add_input()
|
||||
# first_layout = add_input(num_of_input) # Установка начального окна ввода
|
||||
|
||||
scrollWidget.setLayout(self.inputs_layout)
|
||||
|
||||
scroll.setWidgetResizable(True)
|
||||
scroll.setWidget(scrollWidget)
|
||||
|
||||
layout_boss.addWidget(scroll)
|
||||
|
||||
Button_make_fun_button = QPushButton("+")
|
||||
Button_make_fun_button.clicked.connect(self.add_input)
|
||||
Button_make_fun_button.setFixedWidth(80)
|
||||
layout_boss.addWidget(Button_make_fun_button)
|
||||
|
||||
layout_boss.addWidget(
|
||||
ButtonGroup(
|
||||
"Переменные",
|
||||
full_names=variable_full_names,
|
||||
buttons_actions={
|
||||
"a": lambda: print("A"),
|
||||
"b": lambda: print("B"),
|
||||
"c": lambda: None,
|
||||
},
|
||||
)
|
||||
)
|
||||
layout_boss.addWidget(
|
||||
ButtonGroup(
|
||||
"Функции",
|
||||
full_names=function_full_names,
|
||||
buttons_actions={
|
||||
"exp": lambda: print("exp"),
|
||||
"ln": lambda: print("ln"),
|
||||
"mod": lambda: None,
|
||||
},
|
||||
)
|
||||
)
|
||||
|
||||
self.setLayout(layout_boss)
|
||||
|
||||
def add_input(self):
|
||||
self.num_of_input += 1
|
||||
self.inputs_layout.addWidget(GraphRequester(self.num_of_input))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
w = PlotDialog(
|
||||
variable_full_names={"a": "A", "b": "B", "c": "C"},
|
||||
function_full_names={"exp": "экспонента", "ln": "Логарифм", "mod": "модуль"},
|
||||
)
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
||||
|
Reference in New Issue
Block a user