Найти - Пользователи
Полная версия: Вывод переменной на виджет
Начало » Python для новичков » Вывод переменной на виджет
1 2 3
Agriel
Здравствуйте, подскажите пожалуйста, как вывести значение переменной на виджет (любой). В данном случае 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_())
PEHDOM
в initUI вместо lbl2 пишете self.lbl2
в buttonClicked
вместо self.lbl2.add_text('asd') пишем self.lbl2.setText('asd')
Agriel
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_())
PEHDOM
sender = self.sender() лишнее.
global a, b нужно обьявлять в buttonClicked
Конкретно что пишет? выложите лог ошибки.
Agriel
PEHDOM
sender = self.sender() лишнее.Конкретно что пишет? выложите лог ошибки.
Убрал sender, не помогло. Только начал изучать программирование, хочу на виджет вывести коэффициенты регрессии полученные выше, сначала оформил через функцию, но там совсем ничего не получилось.
PEHDOM
уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.
global a, b нужно обьявлять в buttonClicked
Agriel
PEHDOM
уберите вообще а вставте просто текст в кавычках, работает? чето мне кажеться что у вас косяк с sklearn-ом но я с ним не работал.global a, b нужно обьявлять в buttonClicked
Текст не работает тоже. С sklearn все в порядке я тестировал отдельно от Pyqt. Например, если я пишу c = 1 и пытаюсь передать с в settext аналогично крашится приложение.
c = 1
self.lbl2.SetText©
Agriel
Может ошибка в label? В какой виджет можно передавать значения переменных, чтобы я мог скомбинировать следующее: Ур-ие регрессии имеет вид: y = ax + b
где a и b должны брать значения из переменных
PEHDOM
естевтенно, 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
В какой виджет можно передавать значения переменных
в любой, хотть в заголовок окна…
Agriel
PEHDOM
естевтенно, 1 это int, а в SetText нужно передавать строку self.lbl2.setText(str(a))я ж не знаю чему у вас равно а. Ах да и вот этот код у вас не выполняеться поэтому и краш. “а” не определана у вас.
Спасибо, но у переменной a тип float на выходе, как вывести после запятой?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB