الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعمال lineEdit في بيئة PyQt4

بدأه nabloo في 6 يونيو 2012 · 7 رد · 823 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

قمت بعمل برنامج يعمل على إستدعاء مكتبة binascii كي اقوم بتحويل النص المدخل إليه إلى هكس والعكس صحيح

وكان البرنامج على واجهة الـ Console

#-------------------------------------------------------------------------------
# Name:        module1
# Purpose:
#
# Author:      ~SLY-ONE~
#
# Created:     16/05/2012
# Copyright:   (c) ~SLY-ONE~ 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

def main():
    pass

if __name__ == '__main__':
    main()
import binascii

s = "Copyright (c) 20012-2022 By : ALmuhhnad\nAll Rights Reserved."
print ("""
# # # # # # # # # # # # # # # # #
# # # # | S L Y - O N E | # # # #
# # # # # # # # # # # # # # # # #
-----------------
|||||||||||||
||||@@@@@@|||
|||@@||||@@||
||@@||||||@||
||@@|||||||||
|||@@||||||||
||||@@|||||||
|||||||@@||||
||||||||@@|||
|||||||||@@||
||@||||||@@||
||@@||||@@|||
|||@@@@@@||||
|||||||||||||
-----------------
%s
Date : 1433-6-25 ... Good Lucky !!"""%(s))

print ("\n1-do the code\n2-do open the code\n3-Exit")

_EnterUser_ = 0
while (_EnterUser_ !="3"):
    try:
        _EnterUser_=raw_input("\nSelect from menu : ")
    except KeyboardInterrupt:
        print ("must write what you want")

    if (_EnterUser_ =="1"):
        print ("\nWrite your words :")
        try:
            _CodeMake_=raw_input("")
            print ("\nThe Code :\n"+ binascii.hexlify(_CodeMake_))
        except KeyboardInterrupt:
            print ("must write what you want")

    if (_EnterUser_=="2"):
        print ("\nWrite your words :")
        try:
            _CodeOpen_=raw_input("")
            print ("\nThe UnCode :\n"+ binascii.unhexlify(_CodeOpen_))
        except KeyboardInterrupt:
            print ("must write what you want")
        except TypeError:
            print ("you can't do this")


    if (_EnterUser_=="3"):
        exit

بعد فترة وبعد ان اكتسبت خبرة بتصميم برامج ذو واجهات رسومية

عملت البرنامج على واجهات رسومية بستعمالـ PyQt4

وكان كودة مقسم إلى قسمين القسم الاول يحمل اعدادات وخصائص ورسومات الواجهة الرسومية

اما القسم الثاني كان يحمل اللأحداث

الكود الاول :

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'D:\Projects python GUI\1\MyQt1.ui'
#
# Created: Tue Jun 05 22:25:40 2012
#      by: PyQt4 UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(400, 349)
        self.gridLayoutWidget = QtGui.QWidget(Dialog)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 381, 271))
        self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget"))
        self.gridLayout = QtGui.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setMargin(0)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.tabCode = QtGui.QTabWidget(self.gridLayoutWidget)
        self.tabCode.setDocumentMode(False)
        self.tabCode.setTabsClosable(False)
        self.tabCode.setMovable(False)
        self.tabCode.setObjectName(_fromUtf8("tabCode"))
        self.tab = QtGui.QWidget()
        self.tab.setObjectName(_fromUtf8("tab"))
        self.ButtonCode = QtGui.QPushButton(self.tab)
        self.ButtonCode.setGeometry(QtCore.QRect(10, 210, 111, 31))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Ico/icontexto-webdev-security-048x048.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ButtonCode.setIcon(icon)
        self.ButtonCode.setIconSize(QtCore.QSize(24, 24))
        self.ButtonCode.setObjectName(_fromUtf8("ButtonCode"))
        self.groupBox_3 = QtGui.QGroupBox(self.tab)
        self.groupBox_3.setGeometry(QtCore.QRect(5, 12, 361, 189))
        self.groupBox_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
        self.groupBox_2 = QtGui.QGroupBox(self.groupBox_3)
        self.groupBox_2.setGeometry(QtCore.QRect(0, 90, 361, 101))
        self.groupBox_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
        self.lineRCode1 = QtGui.QLineEdit(self.groupBox_2)
        self.lineRCode1.setGeometry(QtCore.QRect(10, 20, 341, 61))
        self.lineRCode1.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.lineRCode1.setReadOnly(False)
        self.lineRCode1.setObjectName(_fromUtf8("lineRCode1"))
        self.lineWCode1 = QtGui.QLineEdit(self.groupBox_3)
        self.lineWCode1.setGeometry(QtCore.QRect(10, 20, 341, 61))
        self.lineWCode1.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.lineWCode1.setReadOnly(False)
        self.lineWCode1.setObjectName(_fromUtf8("lineWCode1"))
        self.tabCode.addTab(self.tab, _fromUtf8(""))
        self.tab_2 = QtGui.QWidget()
        self.tab_2.setObjectName(_fromUtf8("tab_2"))
        self.groupBox_4 = QtGui.QGroupBox(self.tab_2)
        self.groupBox_4.setGeometry(QtCore.QRect(5, 12, 361, 189))
        self.groupBox_4.setAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignVCenter)
        self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
        self.groupBox_5 = QtGui.QGroupBox(self.groupBox_4)
        self.groupBox_5.setEnabled(True)
        self.groupBox_5.setGeometry(QtCore.QRect(0, 90, 361, 101))
        self.groupBox_5.setMouseTracking(False)
        self.groupBox_5.setAcceptDrops(False)
        self.groupBox_5.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.groupBox_5.setAutoFillBackground(False)
        self.groupBox_5.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
        self.groupBox_5.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBox_5.setCheckable(False)
        self.groupBox_5.setChecked(False)
        self.groupBox_5.setObjectName(_fromUtf8("groupBox_5"))
        self.lineRCode2 = QtGui.QLineEdit(self.groupBox_5)
        self.lineRCode2.setGeometry(QtCore.QRect(10, 20, 341, 61))
        self.lineRCode2.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.lineRCode2.setReadOnly(False)
        self.lineRCode2.setObjectName(_fromUtf8("lineRCode2"))
        self.lineWCode2 = QtGui.QLineEdit(self.groupBox_4)
        self.lineWCode2.setGeometry(QtCore.QRect(10, 20, 341, 61))
        self.lineWCode2.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.lineWCode2.setReadOnly(False)
        self.lineWCode2.setObjectName(_fromUtf8("lineWCode2"))
        self.ButtonUCode = QtGui.QPushButton(self.tab_2)
        self.ButtonUCode.setGeometry(QtCore.QRect(10, 210, 111, 31))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8("Ico/icontexto-webdev-search-048x048.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ButtonUCode.setIcon(icon1)
        self.ButtonUCode.setIconSize(QtCore.QSize(24, 24))
        self.ButtonUCode.setObjectName(_fromUtf8("ButtonUCode"))
        self.tabCode.addTab(self.tab_2, _fromUtf8(""))
        self.gridLayout.addWidget(self.tabCode, 0, 0, 1, 1)
        self.ButtonExit = QtGui.QPushButton(Dialog)
        self.ButtonExit.setGeometry(QtCore.QRect(200, 290, 189, 51))
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8("Ico/icontexto-webdev-emoticon-sad-048x048.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ButtonExit.setIcon(icon2)
        self.ButtonExit.setIconSize(QtCore.QSize(48, 48))
        self.ButtonExit.setObjectName(_fromUtf8("ButtonExit"))
        self.ButtonInfo = QtGui.QPushButton(Dialog)
        self.ButtonInfo.setGeometry(QtCore.QRect(10, 290, 189, 51))
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8("Ico/icontexto-webdev-info-048x048.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ButtonInfo.setIcon(icon3)
        self.ButtonInfo.setIconSize(QtCore.QSize(48, 48))
        self.ButtonInfo.setObjectName(_fromUtf8("ButtonInfo"))

        self.retranslateUi(Dialog)
        self.tabCode.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
        Dialog.setTabOrder(self.ButtonCode, self.ButtonUCode)
        Dialog.setTabOrder(self.ButtonUCode, self.ButtonInfo)
        Dialog.setTabOrder(self.ButtonInfo, self.ButtonExit)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.ButtonCode.setText(QtGui.QApplication.translate("Dialog", "Create Code", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_3.setTitle(QtGui.QApplication.translate("Dialog", "Write your Code", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("Dialog", "a words UnCode", None, QtGui.QApplication.UnicodeUTF8))
        self.tabCode.setTabText(self.tabCode.indexOf(self.tab), QtGui.QApplication.translate("Dialog", "Cdoe", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_4.setTitle(QtGui.QApplication.translate("Dialog", "Write your words", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_5.setTitle(QtGui.QApplication.translate("Dialog", "a words UnCode", None, QtGui.QApplication.UnicodeUTF8))
        self.ButtonUCode.setText(QtGui.QApplication.translate("Dialog", "Create UnCode", None, QtGui.QApplication.UnicodeUTF8))
        self.tabCode.setTabText(self.tabCode.indexOf(self.tab_2), QtGui.QApplication.translate("Dialog", "UnCode", None, QtGui.QApplication.UnicodeUTF8))
        self.ButtonExit.setText(QtGui.QApplication.translate("Dialog", "Exit", None, QtGui.QApplication.UnicodeUTF8))
        self.ButtonInfo.setText(QtGui.QApplication.translate("Dialog", "Abuot", None, QtGui.QApplication.UnicodeUTF8))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

الكود الثاني :

# -*- coding: utf-8 -*-

"""
Module implementing Dialog.
"""

from PyQt4.QtGui import QDialog
from PyQt4.QtCore import pyqtSignature
from PyQt4 import QtCore, QtGui
import binascii
from Ui_MyQt1 import Ui_Dialog

class Dialog(QDialog, Ui_Dialog):
    """
    Class documentation goes here.
    """
    def __init__(self, parent = None):
        """
        Constructor
        """
        QDialog.__init__(self, parent)
        self.setupUi(self)

    @pyqtSignature("")
    def on_ButtonUCode_clicked(self):
        CodeEnd = self.lineWCode2.text()
        CodeEnd_Lvl1 = binascii.unhexlifyn(CodeEnd)
        self.lineRCode2.setText(CodeEnd_Lvl1)

    @pyqtSignature("")
    def on_ButtonCode_clicked(self):
        CodeEnd = self.lineWCode1.text()
        CodeEnd_Lvl1 = binascii.hexlify(CodeEnd)
        self.lineRCode1.setText(CodeEnd_Lvl1)

    @pyqtSignature("")
    def on_ButtonExit_clicked(self):
        sys.exit(app.exec_())

    @pyqtSignature("")
    def on_ButtonInfo_clicked(self):
        QtGui.QMessageBox.information(self,"About","\nProgramed By : ALmuhhnad\t\n")

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = Dialog()
    Dialog.show()
    sys.exit(app.exec_())

قبل ان ابدا بطرح المشكلة سوف اشرح وضيفة البرنامج

وضيفة الكود هي تحويل النص إلى هكس والعكس صحيح

يعني لدي هذا النص :

ALmuhhnad

وبعد تحويله يخرج لي على الشكل التالي :

414c6d7568686e6164

حسنا من هنا سأبدا بطرح مشكلتي

مشكلتي كتالي :

الكود الأول والذي كان يعتمد على الـ Console كان سليم ولا توجد به مشااكل

ولكن بعد الكود الذي صممته وهو يعتمد على الواجهة الرسومية

إذا قمت بإدخال النص التالي :

ALmuhhnad

يخرج لي على الشكل التالي :

41004c006d007500680068006e0061006400

طيب هنا بدات المشكلة بالضبط وكما تلاحظون ان الناتج نفس الاناتج في الكود الذي يعتمد على الـ Console لكن هنا

بين كل رقمين يضاف 00

وبعد ان اخذت التشفير الناتج بالبرنامج ذو الواجهة الرسومية ووضعتة بالبرنامج الذي يعتمد على الـ Console

كي افك التشفير

ظهر لي الناتج التالي :

A L m u h h n a d

واستنتجت من ذالك ان المشكلة تكمن في الـ lineEdit في مكتبات PyQt4 لنه بعد ما ادخل النص المطلوب

يكون بين كل حرف وحرف فراغ غير ظاهر لكنه يظهر بعد ما تتم عمليه التشفير ...

واريد حلاً كي استطيع إخراج الناتج بدون وجود 00 بين كل رقمين كما في الكود :

41004c006d007500680068006e0061006400

منتظركم ...

والسلام عليكم ورحمة الله

#2

تستطيع إستبدال 00 بفراغ

ناتج إعادة text() ل lineEdit هي QString كذلك ليس str

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

السلام عليكم أخي أحمد يوسف

ما الحل إذا كان ناتج إعداتها هو QSting و كيف اجعله يعيد str

هل يكوون هكذا :

CodeEnd = str(self.lineWCode2.text())
#4

نعم التحويل عبر str

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#5

شاكر لك تفاعلك معي أخي أحمد يوسف

قمت بغيير الآتي : ( في الكود من قسم الأحداث )

قبل :

    @pyqtSignature("")
    def on_ButtonUCode_clicked(self):
        CodeEnd = self.lineWCode2.text()
        CodeEnd_Lvl1 = binascii.unhexlifyn(CodeEnd)
        self.lineRCode2.setText(CodeEnd_Lvl1)


    @pyqtSignature("")
    def on_ButtonCode_clicked(self):
        CodeEnd = self.lineWCode1.text()
        CodeEnd_Lvl1 = binascii.hexlify(CodeEnd)
        self.lineRCode1.setText(CodeEnd_Lvl1)

بعد :

    @pyqtSignature("")
    def on_ButtonUCode_clicked(self):
        CodeEnd = str(self.lineWCode2.text())
        CodeEnd_Lvl1 = str(binascii.unhexlifyn(CodeEnd))
        str(self.lineRCode2.setText(CodeEnd_Lvl1))


    @pyqtSignature("")
    def on_ButtonCode_clicked(self):
        CodeEnd = str(self.lineWCode1.text())
        CodeEnd_Lvl1 = str(binascii.hexlify(CodeEnd))
        str(self.lineRCode1.setText(CodeEnd_Lvl1))

في الحقيقية كنت استفيد منك في الكثير من الاشياء في ردودك على الاعضاء الاخيرن أيضاً

جزاك الله خير ووفقك في علمك وزادك علماً فوق علمك

(وَمَا أُوتِيتُمْ مِنْ الْعِلْمِ إِلاَّ قَلِيلاً)

تم تعديل هذه المشاركة بواسطة nabloo في 6 يونيو 2012 في 13:20

#6

لدي مشكلة آخرى إذا امكن الاجابة عنها

في الكود التالي في قسم الأحداث والذي يقوم بفك التشفير :

    @pyqtSignature("")
    def on_ButtonUCode_clicked(self):
        CodeEnd = str(self.lineWCode2.text())
        CodeEnd_Lvl1 = str(binascii.unhexlifyn(CodeEnd))
        str(self.lineRCode2.setText(CodeEnd_Lvl1))

بعد ان ادخل البرنامج وادخل الرمز الذي اريد فك تشفيرة يظهر لي هذا الخط

Traceback (most recent call last):
  File "D:\Projects python GUI\1\MyQt1.py", line 27, in on_ButtonUCode_clicked
    CodeEnd_Lvl1 = str(binascii.unhexlifyn(CodeEnd))
AttributeError: 'module' object has no attribute 'unhexlifyn'

أنا اعتقد ان المشكلة السابقة لها علاقه مع هذه المشكلة ولكن اريد ان اسمع رايك

تم تعديل هذه المشاركة بواسطة nabloo في 6 يونيو 2012 في 13:26

#7

أسمها مش unhexlifyn

الإسم هو unhexlify ... يوجد n زائدة

تحياتي ليك

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 6 يونيو 2012 في 14:44

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#8

السلام عليكم ورحمة الله

شاكر لك تفاعلك الطيب معي

بسراحة اخجل من الخطاء البسيط هذا

بسراحة انا لم ادقق لاني نسخت الكود الذي يقوم بتشفير ولصقته وعملت عليه التعديلات اللازمة لذلك كنت ميقن انه ليس خطاء إملائي في اللغة

بعد الإنتهاء اقدم لكم الكود النهائي للبرنامج

http://www.mediafire.com/?asege5fz17bus5a

لمن اراد الإستفادة منه

للعلم البرنامج لم اقم بتصحيح الاخطاء االمتوقعه من المستخدم أيضاء هذا اول واجهة برانامج اصممها منذ دخولي في لغة البايثون

والتي اتمنى وبكل معنى الكلمة ان تنتشر لدينى نحن العرب

تم تعديل هذه المشاركة بواسطة nabloo في 6 يونيو 2012 في 15:53

مواضيع مشابهة