PyGTK 3.0 ile PyGTK 3.4 için de çalışan küçük bir program yapacağız. Bu küçük GUI size bir programı iki veya daha fazla dosyaya nasıl böleceğinizi öğretecektir.
Sebastian Pölsterl'in yeni PyGTK 3 hakkındaki öğreticisini ziyaret edebilirsiniz, işte yeni öğretici, bağlantıyı bırakıyorum:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Bu Sebastian'ın blogu.
Sebastian tarafından bu eğiticinin eleştirisi, bir programı parçalara veya birkaç dosyaya nasıl böleceğini öğretmemesi, PyGTK 3 ile nasıl yapılacağına dair bir örnek göstermesi iyi olurdu.
Tüm büyük ve karmaşık programlar birçok dosyaya bölünür ve dosyalar başka dizinlere bile yerleştirilir, yani farklı klasörlerde bulunurlar.
Küçük bir örnekle başlayalım:
İşte gui.py adlı tek bir dosyadaki yazma kodu. Gedit metin düzenleyicisini veya en çok kullandığımız editörü açıyoruz, aşağıdaki kodu kopyalayıp gui.py olarak kaydediyoruz
gi.repository import Gtk sınıfından gui (): def on_open_clicked (self, button): print "\" Open \ "butonu tıklandı" def on_close_clicked (self, button): print "Kapanma uygulaması" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Aç') self.button.connect ("tıklandı", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Kapat') self.button.connect ("tıklandı", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): print "\" Open \ "düğmesi tıklandı"
Aç düğmesine tıkladığımızda terminalde aktif hale gelen bir fonksiyondur. Etkinleştirmek için sinyal:
self.button.connect ("tıklandı", self.on_open_clicked) def on_close_clicked (self, düğme): "Uygulama kapatılıyor" yazdır Gtk.main_quit ()
Kapat butonuna tıkladığımızda devreye giren bir fonksiyondur.
çalıştırdığımız programı kapatın.
onu etkinleştirmek için sinyal
gi.repository'den self.button.connect ("clicked", self.on_close_clicked) import Gtk ### PyGTK kitaplıklarını çağırıyoruz ### class gui (): ### gui adı verilen sınıf tanımı ana sınıftır # ##
Pencere Öğelerinin Bildirimi: Pencere öğeleri, kullandığımız GUI kitaplıkları tarafından önceden belirlenmiş bir programdır. Örneğin, bir widget bir düğme, bir pencere, bir kutu vb. Bunlar programımızda beyan ettiğimiz widget'lardır.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # aç düğmesi #### self.button = Gtk.Button (label = 'Kapat') #### kapat düğmesi #### self.window.add (self.box) #### kutu pencere adındaki pencere #### self.box.pack_start (self.button, True, True, 0) ##### buton kutu adı verilen kutuda bulunur ### self.window.show_all () ## # tüm pencereyi gösteriyoruz ### gui = gui () ### bir gui nesnesi oluştur ####
Programımızı bizim durumumuzda masaüstündeki basit adlı bir klasöre yerleştiriyoruz
Klasörü terminal ile açıyoruz, benim durumumda Linux Mint 14'ten Nemo kullanıyorum.
Derlemek için python gui.py terminale koyarız
resme bakın.
Artık küçük programımızı veya PyGTK 3 kitaplıklarıyla oluşturulan yeni widget'ımızı görebiliriz
İki düğmeli basit bir penceredir.
Şimdi programı üç bölüme ayırıyoruz, ardından üç dosyanın kodunu bırakıyorum.
İlk gui.py dosyası
gi.repository ithal Gtk yok etmekten ithal yok etmek io sınıfından yok etmek io sınıf gui (yok, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Aç') self.button.connect ("tıklandı", self.on_open_clicked ) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Kapat') self.button.connect ("tıklandı", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
İkinci io.py dosyası
class io: def on_open_clicked (self, button): print "\" Open \ "düğmesi tıklandı"
Üçüncü dosya destroy.py
gi.repository import Gtk sınıfından destroy: def on_close_clicked (self, button): "Kapatma uygulaması" yazdır Gtk.main_quit ()
Bizim durumumuzda üç dosyayı aynı klasöre yerleştiririz, klasöre basit bölünmüş denir.
Üç dosyayı derlemek için. Klasörü terminal ile açıyoruz ve sadece terminale geri koyuyoruz
python gui.py
Gui.py kodunda yapılan değişiklikler
destroy.py ### ifadesini imha etmek için destroy.py ### dosyamızı io import io ### deyiminden içe aktarmak için io.py ### class gui (destroy, io): #### main alt sınıfları, destroy ve io ekliyoruz ####
Cümlenin
def on_open_clicked (self, button): print "\" Open \ "düğmesi tıklandı"
Gui.py içinde değil, io.py dosyasında bulunuyor
Cümle
def on_close_clicked (self, düğme):
"Uygulama kapatılıyor" yazdır
Gtk.main_quit ()
destroy.py dosyasında bulunur
Böylece bir programı aynı anda farklı dizinlerde bulunan birçok dosyaya bölebiliriz.
Öte yandan, Python, özgür yazılımın bir direğidir ve GTK 3.6 /3.8 ile çalışmak üzere uyarlanmıştır, adı PyGTK'dır. Python'un KDE için uyarlamasına PyQT denir.
Python, Mac OS ve WINDOWS için uyarlanmıştır.
Umarım bu PyGTK3 mini öğreticisi size yardımcı olmuştur. İstedikleri tüm yapıcı eleştirileri yapabilirler.
Ayrıca biraz Gtk 3.4 /3.6 ve Vala GTK 3.4 / 3.6 biliyorum.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Son olarak, KDE kullanıcıları KDE için mini bir eğitim yapmadıkları için özür diler.
Kde'de kolaylıkla gui oluşturmak için kdevelop'u (sanırım buna denir) kullanmayı tercih ediyorum ama yine de x şeyinin gerçekleşmesi için süreçleri bulmakta zorlanıyorum:
Python kullananlar için harika: D!
Selamlar!
Merhaba, bu topluluğu uzun zamandır takip ediyorum ve ilk kez yorum yaptığımdan mı yoksa soyadan önce mi yaptığımdan pek emin değilim (gerçekten web'de yorum yazmaya pek vermedim). Mesele şu ki, bunu Elav ve KZKG ^ Gaara'ya yönetici olarak bir öneri bırakmak için yapıyorum ve son zamanlarda farklı programlama dillerinde kod içeren daha fazla gönderi gördüğüm için sözdizimi renklendirmesi için bir eklenti eklemenin iyi bir fikir olacağını düşünüyorum. Epeyce eklenti olduğunu biliyorum ama wordpress kullanıcısı olmadığım için hiç denemedim, bu yüzden sizi isteğin uygulanabilirliği hakkında düşünmeye bırakıyorum. Bu fırsatı, okuyucuların geri kalanına fikir hakkında ne düşündüklerini sormak için kullanıyorum, çünkü dışarıda kodu süslemeden okumayı tercih eden insanlar olduğunu biliyorum. Konuyla ilgili bir tartışma gördüğümü hatırlamadığım için bu konu burada daha önce yorumlanmışsa ve herhangi bir nedenle reddedilmişse özür dilerim.
Gerçek şu ki, programlama dillerinin kodunu vurgulamak için sözdizimini renklendirme seçeneğine sahip olmak istiyorum.
Bu, programlama dillerini öğrenmek isteyen kullanıcılara yardımcı olur.
Ama hey, ben de forumdan memnunum ve birlikte tartışabilir ve öğrenebiliriz.
GNU Emacs daha rahattır, çünkü en azından hangi programlama dili denetleyicisinde çalışmak istediğinizi seçmeniz gerekir (işlemciniz için daha fazla ağırlık istemiyorsanız, GNU Nano kullanın ve en iyi haliyle minimalizmin tadını çıkarın).
Elio, WordPress'ten bahsediyoruz. Blogda uygulandı Desde Linux. Yazıların harflerini renklendirme fonksiyonları yoktur.
Üzgünüm.
Naaa emacs, 84 parmaklı XD .., normal insanlar, metin arkadaşı, sublimetext veya notepad ++ xd olanlar için rahattır
Olası olmayan şey, GNU Emacs'ı ve klavye kısayollarını iyi idare edebilmek için gerekli olan yazmayı öğrenmemiş olmanızdır. Ek olarak, GUI'si menülerini kullanmanızı kolaylaştırır (Windows'ta kullanılabilir, ancak bunu normal modda değil, komut istemi modunda yapmanız önerilir, böylece win32 betiğinizi boykot etmez).
Çok güzel öğretici. Ancak bu arada, python kaynak kodu derlenmemiş, yorumlanmış bir dildir.
Sözde koda derlenebilir. Yorumlayıcı için bir şeyi temsil eden makine dili değil, baytlardır, ancak işlem de derlenmiş olarak adlandırılır. Bu anlamda bir şeyin derlendiğini söylemek mümkündür.
Belki de pytgk2'yi öğrenmek daha iyidir çünkü Windows için mevcut olan en son sürüm 2.24'tür. Seri 3, yokluğuyla dikkat çekiyor. Ve kötü diller, gnome'un her yeni sürümde tüm apileri kırdığını söylüyor.
GTK 3.4 / 3.6 ile bir mockup programlıyorum ve gerçek şu ki onlar sabrınızı ve kafanızı kırıyor, kodu yeniden yazmanız gerekiyor, şimdi Linux Mint halkının neden GTK ve GNOME projesinden şikayet ettiğini anlıyorum.
MINT'dekilere GTK 2.4'e katılıyorum, bu olmadı.
İyi eğitim ve referanslar.
Kod girildiği için Python'da girintiler zorunludur ve örnek kodda dikkate alınmalıdır.
Selamlar!
Python'daki zorunlu tanımlamaların nelerden oluştuğunu açıklayabilir misiniz? Doğruyu söylüyorum, bunu hiç duymadım.PyGTK 2/3 İngilizce forumlarına çok alıştım ve belki de görmezden geliyorum.
Python'da C'deki gibi anahtarlar veya Pascal'daki gibi başlangıç / bitiş blokları kullanmazsınız, ancak her şey koda verdiğiniz girinti ile anlaşılır. Yani bloklar girintili olarak kabul edilir. Bu özellikle sevdiğim bir özellik. Anahtar ve bunun gibi şeyler yazmaktan kaçınırsınız.
Bundan hoşlanmıyorum, iki küçük anahtar veya bir std :: endl; koymak, xd satırı iyi bir şekilde çizelgelenmişse görülmekten daha kolay görünüyor
: p Programlama öğretmeniniz sizin için bir 0 koyacaktır. Daha da kötüsü, sizi işinizden kovarlar. En önemlisi, kodun tüm ima edenlerle okunabilir olmasıdır.
kapanış parantezleri ile bitmesi beni çok daha okunaklı hale getiriyor XD ..
Ciddi anlamda???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Anlıyorsun? Girintiler olmadan çok iyi anlaşılmaz. Ve bu çok kolay. Daha karmaşık olanıyla, yalnızca derleyici anlar. Mesele şu ki, yine de girintilemek ZORUNDA OLDUĞUNUZ için (insanların kodu anlaması için) neden gereksiz olsun ve ayırıcılar kullansın? Yeterince girinti ve hepsi bu.
Elbette hiçbir şey anlaşılmıyor, çünkü c / c ++ 'da bir programın iyi yazım kurallarına saygı duymuyorsunuz. Yaptığınız şey, bir işlevi başka bir işlevin içindeki bir işlevin içine yerleştirmek gibi herhangi bir şey için geçerlidir, o zaman anlayabiliyorsanız sizi xd görmek istiyorum.
bu arada, iki bakışla, bu kod kolayca anlaşılabilir xD
Yaptığım şeyi, girinti olmadan derlemesine rağmen herhangi bir kodu anlamanın son derece zor olduğunu göstermek için kasten yaptım. Yani 2 kuralınız var: Girinti yapın ve sınırlayıcılarla çevreleyin. Ancak bu gereksizdir. Python'da bu tür bir kod yorumlayıcı tarafından kabul edilmez. Ve sadece bir kuralınız var: Girinti. Kolay.
Ama hey, zevkleri olan herkes.
Her ikisi de iyi, girintili ve girintisiz, bence python'a benzer şekilde noktalı virgül stilini veya yakutu tercih ederim, ancak girinti gerekli değildir.
Bu daha iyi anlaşılır: P:
echo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {anahtar (argv [ 1] [1]) {case 'v': ayrıntılı = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; varsayılan: fprintf (stderr, »Kötü seçenek % s \ n », argv [1]); kullanım ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1 ) {do_file (argv [1]); ++ argv; –argc;}} dönüş (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
Selamlar 😀
Sanırım Carlos, kodun ortaya çıktığı yerde girinti olmadığı anlamına geliyor. Kopyala ve yapıştır ile işe yaramaz. Bir gönderi oluştururken etiketin var olup olmadığını bilmiyorum
dil kodunu girmek için. Yoksa koysalar iyi olur.
Sorunun ne olduğunu zaten görmüştüm: KOD Etiketi tüm boşlukları ve sekmeleri kaldırıyor (bunu yapmamalı !!!) Ancak üzerine bir nbsp koyarsanız kod iyi görünüyor. Yazı tipine bağlı olabileceğini düşünmeme rağmen (bilmiyorum) onaltılık A0 (160 Aralık) Kullanılırsa şu şekilde çıkar:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Testlerimde iyi görünüyor, ancak cevapları gönderirken bir önizlemem yok (ve öyle olmalı !!!) Çıkmazsa benim hatam değil
Sebastian Pölsterl'in PyGTK 3 eğitiminde verdiği örneklere bakın, Sebastian etiket koymuyor.
Misal :
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
Sebastian'ın tüm eğitimlerini görebilirsiniz.
Ne demek istediğini bilmiyorum. Demek istediğim, burada, yazılarda "KOD" HTML Etiketi kullanılamaz, böylece kod olarak koyduğunuz ve iyi girintili çıksın. Başvurduğunuz sayfada, sayfa kaynaklarına bakarsanız, CODE kullanmadığını ancak diğer HTML sınırlayıcıları kullandığını göreceksiniz.
Bu, koyduğunuz koda aykırı değil, daha ziyade bu sitenin gönderim sistemindeki bir kusuru işaret ediyor. Belki de yöneticiler düzeltebilir.
Etiketler hakkında konuşurken açıkça Python'dan değil HTML'den bahsediyorum. Her durumda, Python'a girintisiz kod koyarsanız, işe yaramayacaktır. Bir acemi gelir ve kodu bu yayında göründüğü gibi kopyalar ve çalıştırmaya çalışırsa başarısız olur. Acemi olduğunuz için hayal kırıklığına uğrayabilirsiniz. Yine, hata senin değil; ve önceki cevabımda yaptığım şey, sorunu gönderen kullanıcı düzeyinden çözmenin bir yolunu vermekti.
Kesinlikle haklısın, kodu kopyalamak yerine fotoğrafları yüklemeliydim.
PyGTK 3'te ifadelerin nasıl düzgün sıralandığını göstermek için.
Python ile programlamak için Eclipse'i PyDev eklentisiyle veya Pychar m ile kullanmanızı öneririm
Yukarıda bahsedildiği gibi, bu yüzden girintiler nedeniyle python'u sevmiyorum. Gördüğümüz gibi C, Java, PHP vb. Diğer dillerde olan kopyalama ve yapıştırma işlemi çalışmayacaktır.
Okunabilirlik meselesi, bir kod güzelleştirici uyguluyoruz (gibi http://indentcode.net/ ) ve hazır,
Çirkin olan şey sabittir, ancak girinti yoksa ve mantık değiştirilirse, ses çıkarırız ...
PyGTK'da yeniyim, bu dilde kabuk komut dosyalarıyla etkileşim kurmak mümkün mü?
Eğitim için teşekkürler.
Selamlar.