Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2017 17:59:05

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

Здравствуйте, подскажите пожалуйста, как вывести значение переменной на виджет (любой). В данном случае 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_())

Офлайн

#2 Апрель 3, 2017 19:51:06

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

в initUI вместо lbl2 пишете self.lbl2
в buttonClicked
вместо self.lbl2.add_text('asd') пишем self.lbl2.setText('asd')



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Апрель 3, 2017 20:03:23

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

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_())

Офлайн

#4 Апрель 3, 2017 20:28:56

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

sender = self.sender() лишнее.
global a, b нужно обьявлять в buttonClicked
Конкретно что пишет? выложите лог ошибки.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 3, 2017 20:33:58)

Офлайн

#5 Апрель 3, 2017 20:32:06

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

PEHDOM
sender = self.sender() лишнее.Конкретно что пишет? выложите лог ошибки.
Убрал sender, не помогло. Только начал изучать программирование, хочу на виджет вывести коэффициенты регрессии полученные выше, сначала оформил через функцию, но там совсем ничего не получилось.

Прикреплённый файлы:
attachment 123.JPG (21,5 KБ)

Офлайн

#6 Апрель 3, 2017 20:35:54

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.
global a, b нужно обьявлять в buttonClicked



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 3, 2017 20:38:51)

Офлайн

#7 Апрель 3, 2017 20:45:40

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

PEHDOM
уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.global a, b нужно обьявлять в buttonClicked
Текст не работает тоже. С sklearn все в порядке я тестировал отдельно от Pyqt. Например, если я пишу c = 1 и пытаюсь передать с в settext аналогично крашится приложение.
c = 1
self.lbl2.SetText©

Офлайн

#8 Апрель 3, 2017 20:47:32

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

Может ошибка в label? В какой виджет можно передавать значения переменных, чтобы я мог скомбинировать следующее: Ур-ие регрессии имеет вид: y = ax + b
где a и b должны брать значения из переменных

Офлайн

#9 Апрель 3, 2017 20:51:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

естевтенно, 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_
поместите его хотябы в buttonClicked

в self.lbl2.setText “setText” c маленькой буквы…

Agriel
В какой виджет можно передавать значения переменных
в любой, хотть в заголовок окна…



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 3, 2017 21:40:32)

Офлайн

#10 Апрель 3, 2017 22:49:01

Agriel
Зарегистрирован: 2017-03-23
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод переменной на виджет

PEHDOM
естевтенно, 1 это int, а в SetText нужно передавать строку self.lbl2.setText(str(a))я ж не знаю чему у вас равно а. Ах да и вот этот код у вас не выполняеться поэтому и краш. “а” не определана у вас.
Спасибо, но у переменной a тип float на выходе, как вывести после запятой?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version