للفائدة أضع لكم الكود المصدري source code لأداة qr generator المكتوبة بلغة البايثون
بواسطة سليمان القسيمي
بتاريخ 10 / 01 / 2025
تمت كتابة هذه الأداة لتعمل على نظام التشغيل ويندوز , وهي أداة بسيطة تمكننا من الحصول على رمز qr code للروابط التي نقوم بإدخالها
ويتم حفظ الناتج على شكل صورة بامتداد png مما يسهل تشغيلها في معظم المنصات والأجهزة.
الأداة مزودة بواجهة رسومية graphical user interface مبسطة تحتوي على مربع نصي text box لإدخال النص المراد إجراء عملية الحصول على qr code له , بالإضافة إلى زر لاستخراج ال qr code
وقد تم استخدام لغة البايثون لبرمجة الأداة.
ومن أجل الفائدة ؛ أحببت وضع الكود المصدري ليستفيد منه الجميع.
الملحقات الخارجية
- تنزيل المكتبة:
- افتح موجه الأوامر cmd واكتب الكود التالي
- Pip install wx python
نفذ الأمر بالضغط على مفتاح الدخول enter وانتظر حتى يتم تنزيل المكتبة وتثبيتها في بيئة بايثون الخاصة بك
- مكتبة pyqrcode لإنشاء كائنات qr code
- تنزيل المكتبة:
- افتح موجه الأوامر cmd واكتب الكود التالي
- Pip install pyqrcode
- نفذ الأمر بالضغط على مفتاح الدخول enter وانتظر حتى يتم تنزيل المكتبة وتثبيتها في بيئة بايثون الخاصة بك
- مكتبة pypng للتعامل مع الصور التي بصيغة png
- تنزيل المكتبة:
- افتح موجه الأوامر cmd واكتب الكود التالي
- Pip install pypng
- نفذ الأمر بالضغط على مفتاح الدخول enter وانتظر حتى يتم تنزيل المكتبة وتثبيتها في بيئة بايثون الخاصة بك
الكود:
# qr generator.py
# importing modules
import pyqrcode
import wx
import datetime
# define a function that generates the picture's default name based on the date and time
def file_name_create():
# create a date and time object
obj = datetime.datetime.now()
# extracting needed data from datetime object
year = str(obj.year)
mon = obj.month
day = obj.day
hour = str(obj.hour)
min = str(obj.minute)
sec = str(obj.second)
# formatting the month variable
if mon <10:
mon = "0"+str(mon)
else:
mon = str(mon)
#formatting the day variable
if day <10:
day = "0"+str(day)
else:
day = str(day)
# formatting and combining data to a new variable
name = "{}-{}-{}_{},{},{}".format(year,mon,day,hour,min,sec)
return name
# the main program's class
class main(wx.Frame):
def __init__(self):
# inicializing the app window
wx.Frame.__init__(self,parent=None,title="qr generator",name="qr generator",size=(350,300))
# centring the window
self.Centre()
# adding the controls containor
p = wx.Panel(self)
# creating the auto sizer for window controls which adjusts the location and size of the controls based on screen size
sizer = wx.BoxSizer(wx.HORIZONTAL)
# create controls
self.edit = wx.TextCtrl(p,-1,value="",name="الرابط:")
generate = wx.Button(p,-1,label="الحصول على qr code ")
# binding the generate button to the event handler. this process makes the program to call a function when the user clicks the button
generate.Bind(wx.EVT_BUTTON,self.onGenerate)
# add the controls above to the sizer
sizer.Add(self.edit,1,wx.EXPAND|wx.ALL,10)
sizer.Add(generate,1,wx.EXPAND|wx.ALL,10)
# setting the default sizer for the window
self.SetSizer(sizer)
# show the window
self.Show()
# creating the combined function with the generate button
def onGenerate(self,event):
# check the text box content
if self.edit.GetValue() == "":
# show a warning message box if the text box is empty
wx.MessageBox("يُرجى إدخال الرابط أولًا",self.GetTitle(),wx.ICON_WARNING,parent=self)
# refocusing on the text box
self.SetFocus(self.edit)
else:
# get the text box's data and create the qr code object
qr = pyqrcode.create(self.edit.GetValue())
# show the file save dialog
path = wx.SaveFileSelector(" ",".png","qr_"+file_name_create(),self)
# save the png file on the retreaved path from the dialog
qr.png(path,scale=8)
# impty the text box
self.edit.Value = ""
#running the program
app = wx.App()
main()
app.MainLoop()
لتحميل الأداة اضغط هنا
ولتحميل ال source code اضغط هنا
أطيب التحايا