Форум сайта python.su
Добрый вечер! Стоит такая задача: сделать программу с графическим интерфейсом для расчета некоторых значений модели M/M/1. Требуется вывести значения (это пока не трогала), график вероятностей Pk и соответствующую таблицу. Решила писать на Python, но ранее программы с интерфейсом на нем не делала, то, что есть, сделала исходя из обрывков кодов, которые находила в сети.
Собственно, проблема такая: при нажатии на кнопки не происходит ничего. Не могу разобраться, то ли они не ловят сигналы и не выполняется вообще ничего, то ли не передаются значения с line_edit, то ли ошибка в чем-то другом. Прилагаю весь имеющийся код. Буду рада, если вы поможете и укажете на другие ошибки, если они есть.
#main.py import sys import qt from PyQt4 import QtGui if __name__ == '__main__': qApp=QtGui.QApplication(sys.argv) mw=qt.MyWindow() mw.show() sys.exit(qApp.exec_())
#mmv.py def error(l, v, m): if l/(v*m)>1: print("Система неустойчива, пожалуйста, введите другие значения.") def ro (l, m): return l/m def fact(x): i=1 fact=1 while i<=x: fact*=i i+=1 return fact def gamma(l, m, v): return 1/(v-ro(l, m)) def j(ro, v, l, m): return gamma(ro(l, m), v, l)*l def pk(l, m, v, k): if k>v: j=k-v chisl=(ro(l, m)**v/fact(v))*((ro(l, m)/v)**j) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 return chisl/znam chisl=ro**k/fact(k) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 return chisl/znam def pt(l, m, v): chisl=(ro(l, m)**v/fact(v))*(v/(v-ro(l, m))) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 return chisl/znam def lists(v, k, l, m): i_list=[i for i in range (v)] i2_list=[i+v for i in range (k-v)] i3_list=[i for i in range (k)] pk_list=[pk(l, m, v, i) for i in range (v)] w_list=[pk(l, m, v, i) for i in range (v)] i=0 while i<(k-v): w_list.append(pk(l, m, v, v+i)) i+=1 return i_list, i2_list, i3_list, pk_list, w_list
#mmv_ui.py from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(246, 424) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.lamda = QtGui.QLineEdit(self.centralwidget) self.lamda.setGeometry(QtCore.QRect(90, 20, 113, 20)) self.lamda.setObjectName(_fromUtf8("lamda")) self.miu = QtGui.QLineEdit(self.centralwidget) self.miu.setGeometry(QtCore.QRect(90, 50, 113, 20)) self.miu.setObjectName(_fromUtf8("miu")) self.v = QtGui.QLineEdit(self.centralwidget) self.v.setGeometry(QtCore.QRect(90, 80, 113, 20)) self.v.setObjectName(_fromUtf8("v")) self.label = QtGui.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 20, 41, 20)) self.label.setObjectName(_fromUtf8("label")) self.label_2 = QtGui.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(30, 50, 21, 16)) self.label_2.setObjectName(_fromUtf8("label_2")) self.label_3 = QtGui.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(30, 80, 47, 13)) self.label_3.setObjectName(_fromUtf8("label_3")) self.label_4 = QtGui.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(30, 110, 47, 13)) self.label_4.setObjectName(_fromUtf8("label_4")) self.k = QtGui.QLineEdit(self.centralwidget) self.k.setGeometry(QtCore.QRect(90, 110, 113, 20)) self.k.setObjectName(_fromUtf8("k")) self.tableWidget = QtGui.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(20, 180, 201, 192)) self.tableWidget.setObjectName(_fromUtf8("tableWidget")) self.tableWidget.setColumnCount(2) self.tableWidget.setRowCount(0) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item) self.show_table = QtGui.QPushButton(self.centralwidget) self.show_table.setGeometry(QtCore.QRect(20, 140, 75, 23)) self.show_table.setObjectName(_fromUtf8("show_table")) self.show_plot = QtGui.QPushButton(self.centralwidget) self.show_plot.setGeometry(QtCore.QRect(140, 140, 75, 23)) self.show_plot.setObjectName(_fromUtf8("show_plot")) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 246, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.label.setText(_translate("MainWindow", "lambda", None)) self.label_2.setText(_translate("MainWindow", "miu", None)) self.label_3.setText(_translate("MainWindow", "v", None)) self.label_4.setText(_translate("MainWindow", "k", None)) item = self.tableWidget.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "K", None)) item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("MainWindow", "Pk", None)) self.show_table.setText(_translate("MainWindow", "Show table", None)) self.show_plot.setText(_translate("MainWindow", "Show plot", None))
#qt.py import sys import mmv from PyQt4 import QtGui from PyQt4.QtCore import SIGNAL from mmv_ui import Ui_MainWindow from PyQt4.QtGui import QMainWindow #import numpy as np from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas class MyWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.setupUi(self) class wind(Ui_MainWindow): def __init__(self, parent): Ui_MainWindow.__init__(self) self._connectSlots() def _connectSlots(self): self.connect(self.show_table,SIGNAL("clicked()"),self._slotTableClicked) self.connect(self.show_plot,SIGNAL("clicked()"),self._slotPlotClicked) def _slotTableClicked(self): def fill_table(self): table = self.tableWidget() l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) print(l, m, v, k) mmv.error(l, v, m) #mmv.lists(v, k, l, m) i3_list=[i for i in range (k)] w_list=[mmv.pk(l, m, v, i) for i in range (v)] i=0 while i<(k-v): w_list.append(mmv.pk(l, m, v, v+i)) i+=1 table.setRowCount(len(k)) for i in range (len(k)): table.setItem(i, 0, i3_list[i]) for j in range (len(k)): table.setItem(j, 1, w_list[j]) def _slotPlotClicked(self): l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) mmv.error(l, v, m) mmv.lists(v, k, l, m) class Qt4MplCanvas(FigureCanvas): def __init__(self): self.fig=Figure() self.axes=self.fig.add_subplot(111) self.x=mmv.i3_list self.x2=mmv.i_list self.y=mmv.w_list self.y2=mmv.pk_list self.axes.plot(self.x, self.y, self.x2, self.y2) FigureCanvas.__init__(self,self.fig) qApp=QtGui.QApplication(sys.argv) mpl=Qt4MplCanvas() mpl.show() qApp.exec_() sys.exit(qApp.exec_())
Офлайн
caille
Не могу разобраться, то ли они не ловят сигналы и не выполняется вообще ничего, то ли не передаются значения с line_edit, то ли ошибка в чем-то другом.
#!/usr/bin/env python3 import sys import mmv from PyQt4 import QtGui from PyQt4.QtCore import SIGNAL from mmv_ui import Ui_MainWindow from PyQt4.QtGui import QMainWindow #import numpy as np from matplotlib.figure import Figure #from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas import unittest.mock FigureCanvas = unittest.mock.MagicMock() class MyWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.setupUi(self) # class wind(Ui_MainWindow): # def __init__(self, parent): Ui_MainWindow.__init__(self) self._connectSlots() def _connectSlots(self): self.connect(self.show_table,SIGNAL("clicked()"),self._slotTableClicked) self.connect(self.show_plot,SIGNAL("clicked()"),self._slotPlotClicked) def _slotTableClicked(self): print('table clicked', self.lamda.text()) def fill_table(self): table = self.tableWidget() l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) print(l, m, v, k) mmv.error(l, v, m) #mmv.lists(v, k, l, m) i3_list=[i for i in range (k)] w_list=[mmv.pk(l, m, v, i) for i in range (v)] i=0 while i<(k-v): w_list.append(mmv.pk(l, m, v, v+i)) i+=1 table.setRowCount(len(k)) for i in range (len(k)): table.setItem(i, 0, i3_list[i]) for j in range (len(k)): table.setItem(j, 1, w_list[j]) def _slotPlotClicked(self): print('slot clicked', self.lamda.text()) l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) mmv.error(l, v, m) mmv.lists(v, k, l, m) class Qt4MplCanvas(FigureCanvas): def __init__(self): self.fig=Figure() self.axes=self.fig.add_subplot(111) self.x=mmv.i3_list self.x2=mmv.i_list self.y=mmv.w_list self.y2=mmv.pk_list self.axes.plot(self.x, self.y, self.x2, self.y2) FigureCanvas.__init__(self,self.fig) # qApp=QtGui.QApplication(sys.argv) mpl=Qt4MplCanvas() mpl.show() # qApp.exec_() # sys.exit(qApp.exec_())
cailleСначала надо сделать консольную программу, убедиться, что она работает правильно, а потом заниматься графикой.
Буду рада, если вы поможете и укажете на другие ошибки, если они есть.
self.connect(self.show_table,SIGNAL("clicked()"),self._slotTableClicked)
Отредактировано py.user.next (Янв. 2, 2016 04:23:31)
Офлайн
> Собственно, проблема такая: при нажатии на кнопки не происходит ничего.
if __name__ == '__main__': qApp=QtGui.QApplication(sys.argv) mw=qt.MyWindow() mw.show() sys.exit(qApp.exec_()) ... class MyWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.setupUi(self) class wind(Ui_MainWindow): def __init__(self, parent): Ui_MainWindow.__init__(self) self._connectSlots() ......
Офлайн
py.user.nextРасчеты все выполнялись, график в консоли выводился.
Сначала надо сделать консольную программу, убедиться, что она работает правильно, а потом заниматься графикой.
RodegastА в каком должны, в том, который из формы получился?
А ничего и не произойдёт. У тебя кнопки не в том окне подключаются.
Офлайн
cailleСомневаюсь. Просто я когда запускал эту хрень, она там ошибку показала, из-за которой ничего не вычисляется.
Расчеты все выполнялись, график в консоли выводился.
Офлайн
py.user.nextХм, странно. Я меняла немного код после этого, но просто все по функциям засунула (а конкретно - вычисление ро и создание списков), чтобы можно было из другого файла вызывать.
Сомневаюсь. Просто я когда запускал эту хрень, она там ошибку показала, из-за которой ничего не вычисляется.
py.user.nextспасибо, буду пока дальше заставить эту фигню на костылях работать)
Кнопочки можешь взять в сообщении выше, я там поправил чисто кнопочки, а остальное не стал трогать.
Отредактировано caille (Янв. 2, 2016 23:37:43)
Офлайн
cailleВот там строка из функции pk(), которая использует функцию ro(), не вызывая её.
но просто все по функциям засунула
caillechisl=ro**k/fact(k)
Офлайн
py.user.nextда, я уже нашла и исправила
Вот там строка из функции pk(), которая использует функцию ro(), не вызывая её.
Офлайн
Здравствуйте! Обращаюсь к вам снова, надеюсь, что увидите
Теперь проблема такая: при нажатии на кнопки не заполняется таблица и не показывается график. Делаю вроде все так же, как нахожу в уроках в интернете.
Последняя версия кода, так сказать:
#mmv_ui.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mmv.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(480, 477) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.lamda = QtGui.QLineEdit(self.centralwidget) self.lamda.setGeometry(QtCore.QRect(90, 20, 113, 20)) self.lamda.setObjectName(_fromUtf8("lamda")) self.miu = QtGui.QLineEdit(self.centralwidget) self.miu.setGeometry(QtCore.QRect(90, 50, 113, 20)) self.miu.setObjectName(_fromUtf8("miu")) self.v = QtGui.QLineEdit(self.centralwidget) self.v.setGeometry(QtCore.QRect(90, 80, 113, 20)) self.v.setObjectName(_fromUtf8("v")) self.llabl = QtGui.QLabel(self.centralwidget) self.llabl.setGeometry(QtCore.QRect(30, 20, 41, 20)) self.llabl.setObjectName(_fromUtf8("llabl")) self.mlabl = QtGui.QLabel(self.centralwidget) self.mlabl.setGeometry(QtCore.QRect(30, 50, 21, 16)) self.mlabl.setObjectName(_fromUtf8("mlabl")) self.vlabl = QtGui.QLabel(self.centralwidget) self.vlabl.setGeometry(QtCore.QRect(30, 80, 47, 13)) self.vlabl.setObjectName(_fromUtf8("vlabl")) self.klabl = QtGui.QLabel(self.centralwidget) self.klabl.setGeometry(QtCore.QRect(30, 110, 47, 13)) self.klabl.setObjectName(_fromUtf8("klabl")) self.k = QtGui.QLineEdit(self.centralwidget) self.k.setGeometry(QtCore.QRect(90, 110, 113, 20)) self.k.setObjectName(_fromUtf8("k")) self.tableWidget = QtGui.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(230, 10, 201, 421)) self.tableWidget.setObjectName(_fromUtf8("tableWidget")) self.tableWidget.setColumnCount(2) self.tableWidget.setRowCount(0) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item = QtGui.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item) self.show_table = QtGui.QPushButton(self.centralwidget) self.show_table.setGeometry(QtCore.QRect(20, 140, 75, 23)) self.show_table.setObjectName(_fromUtf8("show_table")) self.show_plot = QtGui.QPushButton(self.centralwidget) self.show_plot.setGeometry(QtCore.QRect(140, 140, 75, 23)) self.show_plot.setObjectName(_fromUtf8("show_plot")) self.ptlabl = QtGui.QLabel(self.centralwidget) self.ptlabl.setGeometry(QtCore.QRect(20, 190, 41, 20)) self.ptlabl.setObjectName(_fromUtf8("ptlabl")) self.jlabl = QtGui.QLabel(self.centralwidget) self.jlabl.setGeometry(QtCore.QRect(20, 220, 41, 20)) self.jlabl.setObjectName(_fromUtf8("jlabl")) self.glabl = QtGui.QLabel(self.centralwidget) self.glabl.setGeometry(QtCore.QRect(20, 250, 41, 20)) self.glabl.setObjectName(_fromUtf8("glabl")) self.Pt = QtGui.QLineEdit(self.centralwidget) self.Pt.setEnabled(False) self.Pt.setGeometry(QtCore.QRect(90, 190, 113, 20)) self.Pt.setObjectName(_fromUtf8("Pt")) self.jave = QtGui.QLineEdit(self.centralwidget) self.jave.setEnabled(False) self.jave.setGeometry(QtCore.QRect(90, 220, 113, 20)) self.jave.setObjectName(_fromUtf8("jave")) self.gave = QtGui.QLineEdit(self.centralwidget) self.gave.setEnabled(False) self.gave.setGeometry(QtCore.QRect(90, 250, 113, 20)) self.gave.setObjectName(_fromUtf8("gave")) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 480, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.llabl.setText(_translate("MainWindow", "lambda", None)) self.mlabl.setText(_translate("MainWindow", "miu", None)) self.vlabl.setText(_translate("MainWindow", "v", None)) self.klabl.setText(_translate("MainWindow", "k", None)) item = self.tableWidget.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "K", None)) item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("MainWindow", "Pk", None)) self.show_table.setText(_translate("MainWindow", "Show table", None)) self.show_plot.setText(_translate("MainWindow", "Show plot", None)) self.ptlabl.setText(_translate("MainWindow", "Pt", None)) self.jlabl.setText(_translate("MainWindow", "j", None)) self.glabl.setText(_translate("MainWindow", "gamma", None))
#qt.py import mmv from PyQt4.QtCore import SIGNAL from mmv_ui import Ui_MainWindow from PyQt4.QtGui import QMainWindow #import numpy as np from matplotlib.figure import Figure from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas #import unittest.mock #FigureCanvas = unittest.mock.MagicMock() class MyWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.setupUi(self) # class wind(Ui_MainWindow): # def __init__(self, parent): Ui_MainWindow.__init__(self) self._connectSlots() def _connectSlots(self): self.connect(self.show_table,SIGNAL("clicked()"),self._slotTableClicked) self.connect(self.show_plot,SIGNAL("clicked()"),self._slotPlotClicked) def _slotTableClicked(self): print('table clicked', self.lamda.text()) l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) i3_list = mmv.make_i3_list(k) w_list = mmv.make_w_list(l, m, v, k) jave = str(round(mmv.j(v, l, m), 5)) gave = str(round(mmv.gamma(l, m, v), 5)) pt = str(round(mmv.pt(l, m, v), 5)) self.jave.setText(jave) self.gave.setText(gave) self.Pt.setText(pt) table = self.tableWidget() # def fill_table(self): table.setRowCount(len(k)) for t in range (len(k)): table.setItem(t, 0, i3_list[t]) for j in range (len(k)): table.setItem(j, 1, w_list[j]) # table.fill_table(self) def _slotPlotClicked(self): print('PLOT clicked', self.lamda.text()) l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) i_list = mmv.make_i_list(v) i3_list = mmv.make_i3_list(k) pk_list = mmv.make_pk_list(l, m, v) w_list = mmv.make_w_list(l, m, v, k) jave = str(round(mmv.j(v, l, m), 5)) gave = str(round(mmv.gamma(l, m, v), 5)) pt = str(round(mmv.pt(l, m, v), 5)) self.jave.setText(jave) self.gave.setText(gave) self.Pt.setText(pt) class Qt4MplCanvas(FigureCanvas): def __init__(self): self.fig=Figure() self.axes=self.fig.add_subplot() self.x=i3_list self.x2=i_list self.y=w_list self.y2=pk_list self.axes.plot(self.x, self.y, self.x2, self.y2) FigureCanvas.__init__(self,self.fig) mpl=Qt4MplCanvas() mpl.show()
#mmv.py def error(l, v, m): if l/(v*m)>1: print("Система неустойчива, пожалуйста, введите другие значения.") def ro (l, m): return l/m def fact(x): i=1 fact=1 while i<=x: fact*=i i+=1 return fact def gamma(l, m, v): return 1/(v-ro(l, m)) def j(v, l, m): return gamma(ro(l, m), v, l)*l #print("Вероятность системы в какой момент вы хотите рассчитать?") #k=int(input()) def pk(l, m, v, k): print("0") print(k, v) if k>v: j=k-v print(j) chisl=(ro(l, m)**v/fact(v))*((ro(l, m)/v)**j) print(chisl) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 print(znam) return chisl/znam chisl=ro(l, m)**k/fact(k) print(chisl) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 print(znam) return chisl/znam def pt(l, m, v): chisl=(ro(l, m)**v/fact(v))*(v/(v-ro(l, m))) x=0 znam=0 while x<=(v-1): znam+=(ro(l, m)**x/fact(x))+((ro(l, m)**v*v)/fact(v)*(v-ro(l, m))) x+=1 return chisl/znam def make_i_list(v): i_list=[i for i in range (v)] return i_list def make_i2_list(v, k): i2_list=[i+v for i in range (k-v)] return i2_list def make_i3_list(k): i3_list=[i for i in range (k)] return i3_list def make_pk_list(l, m, v): pk_list=[pk(l, m, v, i) for i in range (v)] print(pk_list) return pk_list def make_w_list(l, m, v, k): w_list=[pk(l, m, v, i) for i in range (v)] i=0 while i<(k-v): w_list.append(pk(l, m, v, v+i)) i+=1 return w_list
Офлайн
Тут поправил, чтобы таблицу заполняло.
#!/usr/bin/env python3 #qt.py import mmv from PyQt4.QtCore import SIGNAL from mmv_ui import Ui_MainWindow from PyQt4.QtGui import QMainWindow, QTableWidgetItem #import numpy as np from matplotlib.figure import Figure #from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas import unittest.mock FigureCanvas = unittest.mock.MagicMock() class MyWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.setupUi(self) # class wind(Ui_MainWindow): # def __init__(self, parent): Ui_MainWindow.__init__(self) self._connectSlots() def _connectSlots(self): self.connect(self.show_table,SIGNAL("clicked()"),self._slotTableClicked) self.connect(self.show_plot,SIGNAL("clicked()"),self._slotPlotClicked) def _slotTableClicked(self): print('table clicked', self.lamda.text()) l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) i3_list = mmv.make_i3_list(k) w_list = mmv.make_w_list(l, m, v, k) jave = str(round(mmv.j(v, l, m), 5)) gave = str(round(mmv.gamma(l, m, v), 5)) pt = str(round(mmv.pt(l, m, v), 5)) self.jave.setText(jave) self.gave.setText(gave) self.Pt.setText(pt) table = self.tableWidget #() # def fill_table(self): table.setRowCount(k) # table.setRowCount(len(k)) for t in range (k): # for t in range (len(k)): item = QTableWidgetItem() item.setText(str(i3_list[t])) table.setItem(t, 0, item) # table.setItem(t, 0, i3_list[t]) for j in range (k): # for j in range (len(k)): item = QTableWidgetItem() item.setText(str(w_list[j])) table.setItem(j, 1, item) # table.setItem(j, 1, w_list[j]) # table.fill_table(self) def _slotPlotClicked(self): print('PLOT clicked', self.lamda.text()) l = int(self.lamda.text()) m = int(self.miu.text()) v = int(self.v.text()) k = int(self.k.text()) i_list = mmv.make_i_list(v) i3_list = mmv.make_i3_list(k) pk_list = mmv.make_pk_list(l, m, v) w_list = mmv.make_w_list(l, m, v, k) jave = str(round(mmv.j(v, l, m), 5)) gave = str(round(mmv.gamma(l, m, v), 5)) pt = str(round(mmv.pt(l, m, v), 5)) self.jave.setText(jave) self.gave.setText(gave) self.Pt.setText(pt) class Qt4MplCanvas(FigureCanvas): def __init__(self): self.fig=Figure() self.axes=self.fig.add_subplot() self.x=i3_list self.x2=i_list self.y=w_list self.y2=pk_list self.axes.plot(self.x, self.y, self.x2, self.y2) FigureCanvas.__init__(self,self.fig) mpl=Qt4MplCanvas() mpl.show()
Офлайн