Python kullanarak doğrudan yürütülebilir bir çapraz platform GUI uygulamasını nasıl oluşturabilirim?


263

Python birden fazla platformda çalışır ve masaüstü ve web uygulamaları için kullanılabilir, bu yüzden Mac, Windows ve Linux için yürütülebilir bir dosyada derlemenin bir yolu olduğu sonucuna varıyorum.

Sorun şu ki, nereden başlayacağım veya onunla nasıl GUI yazacağım hakkında bir fikrim yok, kimse buna ışık tutabilir ve beni doğru yöne yönlendirebilir mi?

Yanıtlar:


285

İlk önce Python bağlamaları ile bazı GUI kütüphanelerine ve daha sonra (isterseniz) python komut dosyalarınızı bağımsız çalıştırılabilir dosyalara dönüştürecek bir programa ihtiyacınız olacak.

Python bağlamaları olan platformlar arası GUI kitaplıkları (Windows, Linux, Mac)

Tabii ki, çok var, ama vahşi doğada gördüğüm en popüler olanları:

Tam liste http://wiki.python.org/moin/GuiProgramming adresindedir.

Tek bir yürütülebilir dosya (tüm platformlar)

  • PyInstaller - en aktif (ile de kullanılabilir PyQt)
  • fbs - yukarıdaki Qt'yi seçtiyseniz

Tek yürütülebilir (Windows)

Tek yürütülebilir (Linux)

  • Dondur - py2exe ile aynı şekilde çalışır, ancak Linux platformunu hedefler

Tek yürütülebilir (Mac)

  • py2app - yine, py2exe gibi çalışır, ancak Mac OS'yi hedefler

19
Py2exe yerine windows için pyinstaller hakkında konuşun.
changelog

8
4.5 QT'nin LGPL altında olacağını belirtmek gerekir.
CTT

14
... artık çok kullanmayı düşünmelisiniz neden olduğu Pyside olduğunu LGPL. Ayrıca PyQt4'ün Python 2 API'sinden daha fazla Pythonic.
Chris Morgan

4
Ayrıca , çapraz platform olan, bakımı yapılan ve Python 3.x'i destekleyen cx_Freeze de ekleyebilirsiniz .
fbmd

2
Burada neden Kivy'den bahsedilmiyor ? Bu soru için geçerli bir seçenek değil mi?
SilSur

56

Başka bir sistem (henüz kabul edilen cevapta belirtilmemiş), py2exe yapmazken benim bir PyQt projesi için çalışan PyInstaller. Kullanımı daha kolay buldum.

http://www.pyinstaller.org/

Pyinstaller, Gordon McMillan'ın Python Yükleyicisine dayanmaktadır. Bu artık mevcut değil.


1
Ve bu cevabın yazılmasından 3 yıl sonra, pyinstaller STILL Python 3'ü desteklemiyor ve gelecekteki sürümlerin yol haritasında listelenmiyor. Yani, AIX ve Solaris desteği Python 3'ten gerçekten daha yararlı mı?
Dave

11
Şimdi Python 2.7 ve Python 3.3, 3.4 ve 3.5'i destekliyor.
Katu

4
Ve şimdi 3.6.
Rexcirus

14

Py2exe için alternatif bir araç, windows ve linux için yürütülebilir dosyalar üreten bbfreeze'dir . Py2exe daha yeni ve yumurta oldukça iyi işler. Çok çeşitli uygulamalar için konfigürasyon olmadan sihirli bir şekilde daha iyi çalıştığını buldum.


11

Temel olarak Gnome Toolkit için bir Python sarıcı olan PyGTK da var . Zihnimi Tkinter'den daha kolay sarmıştım, daha önce hiç GUI programlama bilgisi yok. Oldukça iyi çalışıyor ve bazı iyi öğreticiler var. Ne yazık ki Windows için Python 2.6 için bir yükleyici yoktur ve bir süre için olmayabilir.


6

Python varsayılan olarak hemen hemen her Windows olmayan işletim sistemine yüklendiğinden, gerçekten emin olmanız gereken tek şey, kullandığınız standart olmayan kitaplıkların tümünün yüklü olmasıdır.

Bunu söyledikten sonra, python yorumlayıcısını ve kullandığınız kütüphaneleri içeren yürütülebilir dosyalar oluşturmak mümkündür. Ancak bunun büyük bir çalıştırılabilir dosya oluşturması muhtemeldir.

MacOS X, tam bağımsız GUI uygulamaları oluşturmak için Xcode IDE'de destek de içerir. Bunlar OS X çalıştıran herhangi bir kullanıcı tarafından çalıştırılabilir.


6

GUI'nin kendisi için:

PyQt hemen hemen referanstır.

Hızlı bir kullanıcı arayüzü geliştirmenin başka bir yolu, bir web uygulaması yazmak, yerel olarak çalışmasını ve uygulamayı tarayıcıda görüntülemektir.

Ayrıca, lubos hasko tarafından önerilen Tkinter seçeneğine giderseniz, uygulamanızın Python olmadan Windows ortamında çalışmasını sağlamak için portablepy'yi denemek isteyebilirsiniz.


4

Bunun bunu yapmanın en iyi yolu olduğundan emin değilim, ancak Windows'ta Ruby GUI uygulamaları dağıtırken (Python değil, .exe ile ilgili olarak aynı "sorunu"), sadece bir yazıyorum ana komut dosyamı çağıran C # kısa başlatıcısı. Yürütülebilir bir dosyaya derler ve sonra yürütülebilir bir uygulama var.


@Brian Kendi kendine çalışan Ayakkabı uygulamaları için _why tekniğini gördünüz ? Muhtemelen Ayakkabı harici programlarla yapılabilir.
Adam Lassek

Bu uygulamalar için, kullanıcılarımın hiçbiri anonim değil. Çalışma zamanına sahip olup olmadıklarını biliyorum ve eğer yoksa, onlar için yükleyebilirim. Bu konudaki temel endişe, bir komut istemi açmak zorunda kalmadan bu uygulamaların nasıl başlatılacağı ve çalışma zamanının yürütülebilir dosyasını ve ardından program adının nasıl yazılacağıdır.
Brian Warshaw

2
# I'd use tkinter for python 3

import tkinter

tk = tkinter.Tk()
tk.geometry("400x300+500+300")
l = Label(tk,text="")
l.pack()
e = Entry(tk)
e.pack()

def click():
    e['text'] = 'You clicked the button'

b = Button(tk,text="Click me",command=click)
b.pack()

tk.mainloop()

# After this I would you py2exe
# search for the use of this module on stakoverflow
# otherwise I could edit this to let you know how to do it

py2exe

Daha sonra, kullanıcı kendi bilgisayarında python olmasa bile, bir klasörde uygulamayı çalıştırmak için gerekli tüm dosyaları getirmek için py2exe kullanmalısınız (pencerelerden bahsediyorum ... apple os için gerek yok yürütülebilir bir dosya, bence, onu yüklemeye gerek kalmadan içinde python ile birlikte gelir.

Bu dosyayı oluştur

1) Bir setup.py oluşturun

bu kodla:

from distutils.core import setup
import py2exe

setup(console=['l4h.py'])

bir klasöre kaydet

2) Programınızı aynı setup.py klasörüne koyun ve bu klasöre dağıtılabilmesini istediğiniz programı koyun: es: l4h.py

ps: dosyanın adını değiştirin (l4h'den istediğiniz herhangi bir şeye, bu bir örnektir)

3) Bu klasörden cmd'yi çalıştırın (klasörde sağ tıklayın + shift'i tıklayın ve cmd'yi buradan seçin)
4) cmd yazın:> python setup.py py2exe
5) dist klasöründe ihtiyacınız olan tüm dosyalar var
6) zipleyebilir ve dağıtabilir

Pyinstaller

Cmd'den yükleyin

**

pip install pyinstaller

**

Cmd'den dosyanın bulunduğu klasörden çalıştırın

**

pyinstaller dosyası.py

**


2

PySimpleGUI tkinter'ı sarar ve Python 3 ve 2.7 üzerinde çalışır. Ayrıca tüm platformlar için aynı kaynak kodunu kullanarak Qt, WxPython ve bir web tarayıcısında çalışır.

Tkinter'da bulduğunuz tüm widget'ları (kaydırıcılar, onay kutuları, radyo düğmeleri, ...) kullanan özel GUI'ler yapabilirsiniz. Kod çok kompakt ve okunabilir olma eğilimindedir.

#!/usr/bin/env python
import sys
if sys.version_info[0] >= 3:
    import PySimpleGUI as sg
else:
    import PySimpleGUI27 as sg

layout = [[ sg.Text('My Window') ],
          [ sg.Button('OK')]]

window = sg.Window('My window').Layout(layout)
button, value = window.Read()

Yayınlanan PySimpleGUI kodundan oluşturulan resim

Açıklandığı gibi PySimpleGUI Belgeleri , için .exe dosyası oluşturmak , çalıştırmak:

pyinstaller -wF MyGUIProgram.py


1

Derlemeye gerek yokMac / Windows / Linux için python . Bu, yorumlanmış bir dildir, bu nedenle Python yorumlayıcısının seçtiğiniz sisteme kurulu olması yeterlidir (her üç platform için de mevcuttur).

Çapraz platformda çalışan bir GUI kütüphanesine gelince, Python'un Tk / Tcl widget kütüphanesi çok iyi çalışıyor ve yeterince çapraz platform olduğuna inanıyorum.

Tkinter , Tk / Tcl için python arabirimidir

Python projesi web sayfasından:

Tkinter, Python için tek GuiProgramming araç takımı değildir. Bununla birlikte, en yaygın kullanılanı ve Unix, Mac ve Windows arasında taşınabilir olan neredeyse tek


4
Peki, sadece 1 adımlı kurulum isteyen kişilerin sistemlerine dağıtmak için bir kurulum paketi nasıl hazırlarsınız (örneğin, Windows'ta tek bir kurulum paketine çift tıklayın)?
Craig McQueen

Bunun için bildiğim birkaç yaklaşım var: büyük olasılıkla toplu komut dosyasında bir yükleyici yazacak veya hedef sistem için derlenmiş olacaksınız, bu da gerekli dosyaları bir yere bırakacak ve gerekli kütüphaneleri ve çalışma zamanlarını sürece yükleyecektir.
Justin Standard

1
Python'u kendi yüklemenizin bir parçası olarak yüklemek biraz zordur, çünkü zaten Python'un yanlış sürümünün yüklenmesi olasılığıyla uğraşmanız gerekir. Uygulamanızın yeni yüklenen Python sürümüne erişebilmesi için yan yana yüklemeniz gerekir, ancak mevcut tüm uygulamalar Python'un eski sürümünü kullanmaya devam eder. (yani .py dosya ilişkilendirmesi veya PATH gibi şeyleri bozmadan)
Jonathan Hartley

Büyük olasılıkla yükleyiciniz Python'un doğru sürümünün varlığını kontrol eder ve bulursa bunu kullanın, aksi takdirde yükleme işleminin bir parçası olarak python'u yükleyin.
Justin Standard

Doğru - ama bu ikinci seçenek 'aksi takdirde yükleme işleminin bir parçası olarak python'u yükle', tam olarak bahsettiğim şey. Verdiğim nedenlerden ötürü bu çok zor olurdu.
Jonathan Hartley

0

appJarTemel GUI geliştirme için kullanabilirsiniz .

from appJar import gui

num=1

def myfcn(btnName):   
    global num
    num +=1
    win.setLabel("mylabel", num)

win = gui('Test')

win.addButtons(["Set"],  [myfcn])
win.addLabel("mylabel", "Press the Button")

win.go()

Çalışırken GUI

AppJar sitesindeki belgelere bakın .

Kurulum pip install appjarkomut satırından yapılır.


0

!!! KIVY !!!

Kimse Kivy bahsetmediğini görünce şaşırdım!

Bir keresinde Tkinter kullanarak bir proje yaptım, ancak çok geliştiğini savunuyorlarsa da, bana hala 98 98 hissi veriyor, bu yüzden Kivy'ye geçtim .

Eğer yardımcı olursa bir eğitim serisi takip ediyor ...

Sadece kivy'nin nasıl göründüğüne dair bir fikir vermek için şuna bakın (Üzerinde çalıştığım proje):

Üzerinde çalıştığım proje

Ve bir haftadır bunun üzerinde çalışıyorum! Kivy için ne soruyorsunuz? Bunu kontrol et

Bunu seçmemizin nedeni, görünümü ve mobilde de kullanılabilmesidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.