代码似乎是真的,但按钮不起作用,界面关闭


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

汽车价格的估计
我认为 prboblem 发生在最后一部分。我也尝试在 QtDesigner 中制作界面,但我无法将 UI 转换为 py
"temizle"是用于删除行
内的按钮"hesapla"是用于计算的按钮

它当前崩溃,因为您在init_ui方法中建立的小部件都不是实例变量。 必须将self.添加到要在声明变量的方法之外访问的每个变量的开头。

这在将来也可能有所帮助:使用 PyQt5 进行开发时,如果应用程序从 IDE 运行,则通常不会输出堆栈跟踪。 要查看错误消息,请从命令行/终端运行应用程序。

最新更新