Коды, кажется, правда, но кнопки не работают, и интерфейс закрывается - PullRequest
0 голосов
/ 30 мая 2018
import sys
from PyQt5 import QtWidgets

class Pencere(QtWidgets.QWidget):

    def __init__(self):
        super().__init__()

        self.init_ui()
        self.x1 = 0
        self.x2 = 0
        self.x3 = 0
        self.x4 = 0
        self.x5 = 0
        self.x6 = 0
        self.yil = 1
        self.motor_gucu = 1
        self.km = 1
        self.hesapla = 'none'
        self.temizle = 'none'
        self.cevap = 0
        self.cevap1 = 0

    def init_ui(self):

        self.setWindowTitle("Araba Fiyatı Hesaplama")
        self.setStyleSheet("background-color:grey;")

        etiket1 = QtWidgets.QLabel(self)
        etiket1.setText("İL:")
        etiket1.move(30, 30)

        line1 = QtWidgets.QLineEdit(self)
        line1.move(80, 30)
        line1.resize(200, 32)

        etiket2 = QtWidgets.QLabel(self)
        etiket2.setText("MODEL:")
        etiket2.move(30, 80)

        line2 = QtWidgets.QLineEdit(self)
        line2.move(80, 80)
        line2.resize(200, 32)

        etiket3 = QtWidgets.QLabel(self)
        etiket3.setText("YIL:")
        etiket3.move(30, 130)

        line3 = QtWidgets.QLineEdit(self)
        line3.move(80, 130)
        line3.resize(200, 32)

        etiket4 = QtWidgets.QLabel(self)
        etiket4.setText("YAKIT:")
        etiket4.move(30, 180)

        line4 = QtWidgets.QLineEdit(self)
        line4.move(80, 180)
        line4.resize(200, 32)

        etiket5 = QtWidgets.QLabel(self)
        etiket5.setText("VİTES:")
        etiket5.move(30, 230)

        line5 = QtWidgets.QLineEdit(self)
        line5.move(80, 230)
        line5.resize(200, 32)

        etiket6 = QtWidgets.QLabel(self)
        etiket6.setText("KİLOMETRE:")
        etiket6.move(480, 30)

        line6 = QtWidgets.QLineEdit(self)
        line6.move(570, 30)
        line6.resize(200, 32)

        etiket7 = QtWidgets.QLabel(self)
        etiket7.setText("MOTOR GÜCÜ:")
        etiket7.move(480, 80)

        line7 = QtWidgets.QLineEdit(self)
        line7.move(570, 80)
        line7.resize(200, 32)

        etiket8 = QtWidgets.QLabel(self)
        etiket8.setText("GARANTİ:")
        etiket8.move(480, 130)

        line8 = QtWidgets.QLineEdit(self)
        line8.move(570, 130)
        line8.resize(200, 32)

        etiket9 = QtWidgets.QLabel(self)
        etiket9.setText("KİMDEN:")
        etiket9.move(480, 180)

        line9 = QtWidgets.QLineEdit(self)
        line9.move(570, 180)
        line9.resize(200, 32)

        sonuc = QtWidgets.QLabel(self)
        sonuc.setText("SONUÇ:")
        sonuc.move(480, 300)

        yanit = QtWidgets.QLineEdit(self)
        yanit.move(530, 300)

        self.hesapla = QtWidgets.QPushButton("HESAPLA")
        self.temizle = QtWidgets.QPushButton("TEMİZLE")

        self.setGeometry(100, 100, 800, 550)
        h_box = QtWidgets.QHBoxLayout()

        h_box.addStretch()
        h_box.addWidget(self.hesapla)
        h_box.addStretch()
        h_box.addWidget(self.temizle)
        h_box.addStretch()

        v_box = QtWidgets.QVBoxLayout()

        v_box.addStretch()
        v_box.addLayout(h_box)

        self.setLayout(v_box)

        self.hesapla.clicked.connect(self.tamam) 
        self.temizle.clicked.connect(self.sil)   

        self.show()

    def tamam(self): ***to calculate the result***

        self.yil = int(self.line3.text())

        self.km = int(self.line6.text())

        self.motor_gucu = int(self.line7.text())

        il = str(self.line1.text())
        if il == "İstanbul":
            self.x1 = -828
        else:
            self.x1 = 0

        model = str(self.line2.text())

        if model == "Enjoy":
            self.x2 = -2515
        elif model == "Essentia":
            self.x2 = -5736
        else:
            self.x2 = 0

        yakit = str(self.line4.text())

        if yakit == "Benzin":
            self.x3 = 0
        elif yakit == "Dizel":
            self.x3 = 620
        else:
            self.x3 = -192

        vites = str(self.line5.text())

        if vites == "Manuel":
            self.x4 = 0
        else:
            self.x4 = 4543

        garanti = str(self.line8.text())
        if garanti == "Evet":
            self.x5 = 0
        else:
            self.x5 = -1990

        kimden = str(self.line9.text())
        if kimden == "Sahibinden":
            self.x6 = 0
        else:
            self.x6 = 678

        cevap = -3269913+1650.1*self.yil-0.03829*self.km+19.27*self.motor_gucu+self.x1+self.x2
        cevap1 = cevap+self.x3+self.x4+self.x5+self.x6
        self.yanit.setText(str(cevap1))

    def sil(self): ***to clear***
            self.yanit.clear()
            self.line1.clear()
            self.line2.clear()
            self.line3.clear()
            self.line4.clear()
            self.line5.clear()
            self.line6.clear()
            self.line7.clear()
            self.line8.clear()
            self.line9.clear()

app = QtWidgets.QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec_())

Оценка стоимости автомобиля
Я думаю, что проблема возникает в последней части.Также я попытался создать интерфейс в QtDesigner, но я не смог преобразовать пользовательский интерфейс в py
"temizle" - кнопка для удаления внутри строк
"hesapla" - кнопка для расчета

1 Ответ

0 голосов
/ 30 мая 2018

В настоящее время происходит сбой, поскольку ни один из виджетов, которые вы устанавливаете в своем методе init_ui, не является переменными экземпляра.Вы должны добавить self. в начало каждой переменной, к которой вы собираетесь обращаться за пределами метода, в котором они объявлены.

Это может также помочь в будущем: при разработке с использованием PyQt5 трассировки стека обычно невывод, если приложение запускается из IDE.Чтобы увидеть сообщение об ошибке, запустите приложение из командной строки / терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...