Форум сайта python.su
Здравствуйте, подскажите пожалуйста, как вывести значение переменной на виджет (любой). В данном случае label. И может быть есть возможность сделать это красивее?
import sys import pandas as pd import sklearn.linear_model as lm from PyQt5.QtWidgets import QWidget, QMainWindow, QLabel, QApplication, QPushButton global a, b df = pd.read_csv("D:\qwerty.csv") x = df.iloc[:,:-1] y = df.iloc[:,-1] skm = lm.LinearRegression() skm.fit(x, y) a = skm.intercept_ b = skm.coef_ class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): lbl1 = QLabel('Коэффициенты корреляции имеют вид:', self) lbl1.move(15, 10) lbl2 = QLabel(self) lbl2.move(30, 30) btn1 = QPushButton('Button 1', self) btn1.move(30, 50) btn1.clicked.connect(self.buttonClicked) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Correlation') self.show() def buttonClicked(self): sender = self.sender() self.lbl2.add_text('asd') if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
Офлайн
в initUI вместо lbl2 пишете self.lbl2
в buttonClicked
вместо self.lbl2.add_text('asd') пишем self.lbl2.setText('asd')
[code python][/code]
Офлайн
PEHDOM
в initUI вместо lbl2 пишете self.lbl2
в buttonClicked
вместо self.lbl2.add_text('asd') пишем self.lbl2.setText('asd')
import sys import pandas as pd import sklearn.linear_model as lm from PyQt5.QtWidgets import QWidget, QMainWindow, QLabel, QApplication, QPushButton global a, b df = pd.read_csv("D:\qwerty.csv") x = df.iloc[:,:-1] y = df.iloc[:,-1] skm = lm.LinearRegression() skm.fit(x, y) a = skm.intercept_ b = skm.coef_ class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): lbl1 = QLabel('Коэффициенты корреляции имеют вид:', self) lbl1.move(15, 10) self.lbl2 = QLabel(self) self.lbl2.move(30, 30) btn1 = QPushButton('Button 1', self) btn1.move(30, 50) btn1.clicked.connect(self.buttonClicked) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Correlation') self.show() def buttonClicked(self): sender = self.sender() self.lbl2.SetText(a) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
Офлайн
sender = self.sender() лишнее.
global a, b нужно обьявлять в buttonClicked
Конкретно что пишет? выложите лог ошибки.
[code python][/code]
Отредактировано PEHDOM (Апрель 3, 2017 20:33:58)
Офлайн
PEHDOMУбрал sender, не помогло. Только начал изучать программирование, хочу на виджет вывести коэффициенты регрессии полученные выше, сначала оформил через функцию, но там совсем ничего не получилось.
sender = self.sender() лишнее.Конкретно что пишет? выложите лог ошибки.
Прикреплённый файлы: 123.JPG (21,5 KБ)
Офлайн
уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.
global a, b нужно обьявлять в buttonClicked
[code python][/code]
Отредактировано PEHDOM (Апрель 3, 2017 20:38:51)
Офлайн
PEHDOMТекст не работает тоже. С sklearn все в порядке я тестировал отдельно от Pyqt. Например, если я пишу c = 1 и пытаюсь передать с в settext аналогично крашится приложение.
уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.global a, b нужно обьявлять в buttonClicked
Офлайн
Может ошибка в label? В какой виджет можно передавать значения переменных, чтобы я мог скомбинировать следующее: Ур-ие регрессии имеет вид: y = ax + b
где a и b должны брать значения из переменных
Офлайн
естевтенно, 1 это int, а в SetText нужно передавать строку
self.lbl2.setText(str(a))
я ж не знаю чему у вас равно а. Ах да и вот этот код у вас не выполняеться поэтому и краш. “а” не определана у вас.
df = pd.read_csv("D:\qwerty.csv") x = df.iloc[:,:-1] y = df.iloc[:,-1] skm = lm.LinearRegression() skm.fit(x, y) a = skm.intercept_ b = skm.coef_
Agrielв любой, хотть в заголовок окна…
В какой виджет можно передавать значения переменных
[code python][/code]
Отредактировано PEHDOM (Апрель 3, 2017 21:40:32)
Офлайн
PEHDOMСпасибо, но у переменной a тип float на выходе, как вывести после запятой?
естевтенно, 1 это int, а в SetText нужно передавать строку self.lbl2.setText(str(a))я ж не знаю чему у вас равно а. Ах да и вот этот код у вас не выполняеться поэтому и краш. “а” не определана у вас.
Офлайн