عمر ايمن نشر 7 ديسمبر 2021 أرسل تقرير نشر 7 ديسمبر 2021 لقد صممت واجهة GUI لحساب الزمن * المسافة من خلال QT designer ولكن لم أستطع ضبط الكود بشكل يجعله يعمل بشكل صحيح 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) 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")) 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_()) اقتباس
0 Mohamed Abu Abdo نشر 8 يناير 2022 أرسل تقرير نشر 8 يناير 2022 أنشئ دالة تكون مهمتها التحويل الي القيمة التي تريد واستخدم 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.. اقتباس
السؤال
عمر ايمن
لقد صممت واجهة GUI لحساب الزمن * المسافة من خلال QT designer ولكن لم أستطع ضبط الكود بشكل يجعله يعمل بشكل صحيح
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.