توسعهدهنده(ها) | Robin Dunn Harri Pasanen |
---|---|
انتشار اولیه | ۱۹۹۸[۱] |
انتشار پایدار | 4.1.1[۲]
/ ۲۱ نوامبر ۲۰۲۰ |
مخزن | |
نوشتهشده با | پایتون / c++ |
سیستمعامل | چندسکویی |
مجوز | wxWindows License |
وبگاه |
wxPython یک بستهبندی برای API کراس پلت فرم GUI (که اغلب به آن «جعبه ابزار» گفته میشود). wxWidgets (که با زبان ++C نوشته میشود) برای زبان برنامهنویسی پایتون است. این یکی از گزینههای جایگزین تکینتر است و به عنوان یک ماژول پسوند Python (کد ماشین) اجرا میشود.
wxPython به عنوان یک بستهبندی، از مجوز نرمافزار آزاد استفاده شده توسط wxWidgets (مجوز wxWindows)[۳] - و مورد تأیید بنیاد نرمافزار آزاد و ابتکار منبع باز است.
wxPython زمانی که رابین دان (به انگلیسی: Robin Dunn) به GUI نیاز داشت که در سیستمهای HP-UX و همچنین در ویندوز ۳٫۱ اجرا شود ساخته شد. او در حالی که به راهحلهای تجاری فکر میکرد، با اتصالات پایتون برای جعبه ابزار wxWidget روبهرو شد؛ بنابراین، او پایتون را آموخت و در مدت زمان کوتاهی با هری پسانن (به انگلیسی: Harri Pasanen) به یکی از توسعه دهندگان اصلی wxPython تبدیل شد که از همان اتصالات اولیه رشد میکرد.
اولین نسخههای بستهبندی با دست ایجاد شدهاند. با این حال، پس از مدت کوتاهی نگهداری و همگام سازی کدهای پایه با نسخههای wxWidgets بسیار سخت شد. نسخههای بعدی با SWIG ایجاد شدند، که مقدار کار برای به روزرسانی بستهبندی را بسیار کاهش میدادند. اولین نسخه «مدرن» در سال ۱۹۹۸ منتشر شد.
این یک کد ساده "Hello world" است که ایجاد دو شی اصلی در wxPython (شی پنجره اصلی و شی صفحه برنامه) را به تصویر میکشد و پس از آن کنترل را به سیستم رویداد محور منتقل میکند (با فراخوانی MainLoop()
) که قسمت تعاملی کاربر با برنامه را مدیریت میکند.
#!/usr/bin/env python3
import wx
app = wx.App(False) # برنامه جدیدی ایجاد کنید
frame = wx.Frame(None, title="Hello World") # صفحه یک پنجره سطح بالا است
frame.Show(True) # صفحه را نشان دهید
app.MainLoop()
این نمونه دیگری از دکمه خروج در wxPython با نمایش صفحه نمایش wxPython GUI در سیستم عامل ویندوز ۱۰ است.
import wx
class WxButton(wx.Frame):
def __init__(self, *args, **kw):
super(WxButton, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
closeButton = wx.Button(pnl, label='Close Me', pos=(20, 20))
closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
self.SetSize((350, 250))
self.SetTitle('Close Button')
self.Centre()
def OnClose(self, e):
self.Close(True)
def main():
app = wx.App()
ex = WxButton(None)
ex.Show()
app.MainLoop()
if __name__ == __main__":
main()