برنامهنویسی GUI در Python
۱ اردیبهشت ۱۴۰۰
GUI یا رابط کاربری گرافیکی همان چیزی است که کاربر میبیند و در زمان نیاز به برنامهی شما با آن تعامل میکند. داشتن یک GUI خوب میتواند تاثیر بهسزایی در تجربهی کاربری داشته باشد و درنهایت باعث رشد برند شما خواهد شد. بههمین منظور در این مقاله چندین کتابخانه و ابزار معروف که برای توسعهی برنامههای GUI در زبان Python استفاده میشوند را به شما معرفی خواهیم کرد.
۱) PyQt5
PyQt5 یکی از محبوبترین ابزارهای توسعهی برنامههای گرافیکی است که توسط Riverbank Computing توسعه داده شده و میتوان گفت این ابزار ادغام شدهی زبان Python با فریمورک Qt است که از آن برای توسعهی برنامههای کراس پلتفرم تحت دستکاپ استفاده میشود. البته PyQt فراتر از یک ابزار برای توسعهی برنامههای گرافیکی است و امکانات بسیار زیادی را در اختیار شما قرار میدهد.
برای نصب این ابزار میتوانید دستور pip install PyQt5
را اجرا کنید اما همانطور که در مقالهی آموزش نصب و استفاده از Virtual environment در Python گفته شد بهتر است قبل از اجرای این دستور، یک محیط مجازی ایجاد کرده باشید. پس از نصب PyQT5 و اجرای کدهای زیر یک برنامهی سادهی گرافیکی را مشاهده خواهید کرد که Hello World!
در آن چاپ شده است:
import sys
from PyQt5.QtWidgets import QApplication, QWidget,QLabel, QVBoxLayout
app = QApplication(sys.argv)
w = QWidget()
w.resize(500,500)
w.layout = QVBoxLayout()
w.label = QLabel("Hello World!")
w.label.setStyleSheet("font-size:25px;margin-left:155px;")
w.setWindowTitle("PyQt5 Window")
w.layout.addWidget(w.label)
w.setLayout(w.layout)
w.show()
sys.exit(app.exec_())
۲) Tkinter
Tkinter یکی دیگر از محبوبترین کتابخانههای توسعهی رابط کاربری گرافیکی در زبان Python است که جزو اولین گزینههای مبتدیان برای یادگیری توسعهی GUI محسوب میشود زیرا سینتکس آن برای یادگیری بسیار ساده است. همچنین این کتابخانه ویجتهای متنوعی مانند labels، buttons، text fields، checkboxes و scroll buttons را ارائه میدهد و با پشتیبانی از طراحی grid به آسانتر شدن فرایند در توسعهی یک طراحی پیچیده کمک میکند.
برای استفاده از این کتابخانه در Python 3 نیازی به اجرای هیچ دستوری نیست و فقط با اجرای کدهای زیر، یک رابط کاربری گرافیکی ساده خواهید داشت که با دریافت مقادیر وزن و قد، مقدار محاسبه شدهی BMI را در یک popup box نمایش میدهد:
from tkinter import *
from tkinter import messagebox
def get_height():
height = float(ENTRY2.get())
return height
def get_weight():
weight = float(ENTRY1.get())
return weight
def calculate_bmi():
try:
height = get_height()
weight = get_weight()
height = height / 100.0
bmi = weight / (height ** 2)
except ZeroDivisionError:
messagebox.showinfo("Result", "Please enter positive height!!")
except ValueError:
messagebox.showinfo("Result", "Please enter valid data!")
else:
messagebox.showinfo("Your BMI Calculated is : ", bmi)
if __name__ == '__main__':
TOP = Tk()
TOP.bind("<Return>", calculate_bmi)
TOP.geometry("400x400")
TOP.configure(background="#8c52ff")
TOP.title("BMI Calculator")
TOP.resizable(width=False, height=False)
LABLE = Label(TOP, bg="#8c52ff",fg="#ffffff", text="Welcome to BMI Calculator", font=("Helvetica", 15, "bold"), pady=10)
LABLE.place(x=55, y=0)
LABLE1 = Label(TOP, bg="#ffffff", text="Enter Weight (in kg):", bd=6,
font=("Helvetica", 10, "bold"), pady=5)
LABLE1.place(x=55, y=60)
ENTRY1 = Entry(TOP, bd=8, width=10, font="Roboto 11")
ENTRY1.place(x=240, y=60)
LABLE2 = Label(TOP, bg="#ffffff", text="Enter Height (in cm):", bd=6,
font=("Helvetica", 10, "bold"), pady=5)
LABLE2.place(x=55, y=121)
ENTRY2 = Entry(TOP, bd=8, width=10, font="Roboto 11")
ENTRY2.place(x=240, y=121)
BUTTON = Button(bg="#000000",fg='#ffffff', bd=12, text="BMI", padx=33, pady=10, command=calculate_bmi,
font=("Helvetica", 20, "bold"))
BUTTON.grid(row=5, column=0, sticky=W)
BUTTON.place(x=115, y=250)
TOP.mainloop()
۳) Kivy
Kivy یک فریمورک متن باز Python است که برای توسعهی سریع برنامههای گرافیکی مورد استفاده قرار میگیرد و این فریمورک قابلیت multi-touch را بههمراه ویجتهای مختلف برای برنامهی شما فراهم میکند. همچنین شما میتوانید Kivy را روی پلتفرمهای مختلفی مانند Windows، Linux، OS X، Android، iOS و Raspberry Pi اجرا کنید.
این فریمورک با اجرای دستور pip install Kivy
نصب میشود و میتوانید به شکل زیر از آن در پروژهی خود استفاده کنید:
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
def build(self):
return Button(text= " Hello Kivy World ")
TestApp().run()
۴) wxPython
wxPython یک ابزار کراس پلتفرم برای توسعهی برنامههای GUI در زبان Python است که خودش با زبان C++
توسعه داده شده و بهکمک آن میتوانید رابطهای کاربری گرافیکی بهینهای را با کمترین زحمت ایجاد کنید. در حال حاضر این ابزار از پلتفرمهای Windows، MacOS، Mac OS X و Linux پشتیبانی میکند.
نصب wxPython با اجرای دستور pip install wxPython
انجام میشود و کدهای زیر یک مثال ساده از نحوهی کار با این ابزار است:
import wx
myapp = wx.App()
init_frame = wx.Frame(parent=None, title='WxPython Window')
init_frame.Show()
myapp.MainLoop()
۵) PySimpleGUI
PySimpleGUI یک فریمورک GUI در زبان Python است که از Python 3 پشتیبانی میکند و به شما امکان میدهد که رابطهای کاربری گرافیکی سفارشیسازی شده و جذابی را توسعه دهید. همچنین PySimpleGUI با توسعهی برخی کدهای آماده در هستهی این فریمورک باعث شده تا توسعهدهندگان مسیر هموارتری داشته باشند.
نصب این فریمورک با اجرای دستور pip install PySimpleGUI
انجام میشود و برای اطلاعات بیشتر میتوانید مستندات این فریمورک را مطالعه کنید.
import PySimpleGUI as sg
layout = [[sg.Text("Hello from PySimpleGUI")], [sg.Button("OK")]]
window = sg.Window("Demo", layout)
while True:
event, values = window.read()
if event == "OK" or event == sg.WIN_CLOSED:
break
window.close()
۶) PyGUI
PyGUI یکی دیگر از فریمورکهای متن باز GUI برای زبان Python است که به داشتن APIهای ساده معروف است و توسعهدهندگان را قادر میسازد که رابط کاربری برنامههایشان را با المنتهای Native ایجاد کنند بنابراین رابطهای کاربری ایجاد شده بهدلیل Native بودن المنتها از سرعت بالایی برخوردار هستند.
هماکنون این فریمورک بر روی پلتفرمهای مبتنی بر Unix، Windows و Mac OS بهخوبی اجرا میشود و از هر دو نسخهی Python یعنی Python 2 و Python 3 پشتیبانی میکند و نصب این فریمورک با اجرای دستور pip install PyGUI
انجام میشود.
۷) Pyforms
Pyforms یک فریمورک کراس پلتفرم برای توسعهی برنامههای GUI است. این فریمورک یک Python Layer از desktop formهای مبتنی بر PyQT، OpenGL و سایر کتابخانهها را ارئه میدهد و علاوهبراین برنامههای توسعه داده شده با این فریمورک میتوانند بهراحتی و بدون هیچ تغییری بر روی دستکاپ، وب و Terminal سیستمعامل اجرا شوند.
برای نصب این کتابخانه میتوانید دستور pip install PyForms
را اجرا کرده و برای اطلاعات بیشتر میتوانید مستندات رسمی این فریمورک را مطالعه کنید.
منبع: https://betterprogramming.pub/7-must-try-gui-libraries-in-python-34c8f6266363
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi