برنامه‌نویسی GUI در Python


۱ اردیبهشت ۱۴۰۰
برنامه‌نویسی gui در python

GUI یا رابط کاربری گرافیکی همان چیزی است که کاربر می‌‎بیند و در زمان نیاز به برنامه‌ی شما با آن تعامل می‌کند. داشتن یک GUI خوب می‌تواند تاثیر به‌سزایی در تجربه‌ی کاربری داشته باشد و درنهایت باعث رشد برند شما خواهد شد. به‌همین منظور در این مقاله چندین کتابخانه و ابزار معروف که برای توسعه‌ی برنامه‌های GUI در زبان Python استفاده می‌شوند را به شما معرفی خواهیم کرد.

۱) PyQt5

یک برنامه‌ی ساده‌ی گرافیکی پایتون با استفاده از pyqt

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

برنامه‌ی محاسبه‌ی bmi با استفاده از 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

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

برچسب‌ها:

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

توسعه‌دهندگان درباره‌ی ما چه می‌گویند

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیت‌های سرویس دیتابیس‌شون اینه که خودشون به صورت دوره‌ای بکآپ میگیرن.
...

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)