أنشئ دالة تكون مهمتها التحويل الي القيمة التي تريد واستخدم self.pushButton5.clicked.connect في استدعائها ,سوف تكون في حاجة إلي تمرير قيمة كل زر الي الدالة عند الضغط عليه,
يمكنك استخدام lambda <
علي سبيل المثال,
self.pushButton5.clicked.connect(lambda x: self.calc_distance(5))
ال calc_distance هي الدالة الخاصة بنا ,
بعد ذلك يمكنك عرض القيمة الناتجة في self.result من خلال self.result.setText(str(distance))
واقترح عليك انشاء فانكشن مستقلة يمكنك استدعاء ال clicked.connect بداخلها
تابع الكود بعد التعديل
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(554, 401)
self.pushButton5 = QtWidgets.QPushButton(Dialog)
self.pushButton5.setGeometry(QtCore.QRect(110, 220, 93, 28))
self.pushButton5.setObjectName("pushButton5")
self.pushButton8 = QtWidgets.QPushButton(Dialog)
self.pushButton8.setGeometry(QtCore.QRect(220, 220, 93, 28))
self.pushButton8.setObjectName("pushButton8")
self.pushButton12 = QtWidgets.QPushButton(Dialog)
self.pushButton12.setGeometry(QtCore.QRect(320, 220, 93, 28))
self.pushButton12.setObjectName("pushButton12")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(104, 150, 101, 20))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.speed = QtWidgets.QLineEdit(Dialog)
self.speed.setGeometry(QtCore.QRect(220, 150, 113, 22))
self.speed.setObjectName("speed")
self.result = QtWidgets.QLabel(Dialog)
self.result.setGeometry(QtCore.QRect(130, 180, 301, 21))
self.result.setText("")
self.result.setObjectName("result")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
self.initUI() #New
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.pushButton5.setText(_translate("Dialog", "5"))
self.pushButton8.setText(_translate("Dialog", "8"))
self.pushButton12.setText(_translate("Dialog", "12"))
self.label_2.setText(_translate("Dialog", "Enter Speed"))
def initUI(self): #New
self.pushButton5.clicked.connect(lambda x: self.calc_distance(5)) #New
self.pushButton8.clicked.connect(lambda x: self.calc_distance(8)) #New
self.pushButton12.clicked.connect(lambda x: self.calc_distance(12))#New
def calc_distance(self,index):#New
speed = float(self.speed.text()) #New
time_ = float(index)#New
distance = speed*time_ #New
print(distance, " :KM") #New
self.result.setText(str(distance)) #New
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
ما كان ينقص مشروعك هو الحركة أو الاستجابة لمؤثر الضغط علي المفاتيح,
أولا قمنا ببناء دالة initUI وبداخلها المفاتيح ,عند ضغط اي زر او مفتاح يتم استدعاء الدالة calc_distance ونمرر اليها معلومات او عدد الساعات المتعلقة بالزر المضغوط.
وبدورها تحصلي علي السعة من الحقل self,speed ثم ننفذ العملية distance = speed*time_ ,
الناتج يمكن طباعته في شاشة الاوامر ويمكن عرضه داخل self.result
self.result.setText(str(distance))
لا تنسا يجب استدعاء initUI داخل setupUi..