sexta-feira, 7 de agosto de 2015

La 10 Plej Sukcesaj kaj Influaj Ellaborantoj

La 10 Plej Sukcesaj kaj Influaj Ellaborantoj
De ekkuro kaj posedante negocoj al lingvokreado desarrolladores tradicie sukcesis, ne estas preskaŭ limo al kion ili povas plenumi. Ni kolektis liston de kiuj ni pensas ke la plej sukcesa kaj influa desarrolladores.
Jen nia Top 10:

Guido van Rossum


Guido van Rossum
Guido van Rossum OSCON 2006.jpg
Van Rossum ĉe OSCON 2006
Born 31 januaro 1956 (aĝo 59)
Haarlem , Nederlando [1] [2]
Ŝtataneco Nederlanda
Alma mater Universitato de Amsterdamo
Okupacio Komputila programisto, aŭtoro
Mastrino Dropbox [3]
Konita Kreante la Python programlingvo
Cónyuge (j) Kim Knapp (m. 2000)
Infanoj Orlijn Michiel Knapp-van Rossum [4]
Premioj Premio por la Antaŭas de Libera Programaro (2001)
Retpaĝaro www .python.org/~guido/
Guido van Rossum [ elparolo? ] (naskita 31 januaro [5] 1956) estas nederlandanoj komputila programisto kiu estas plej konata kiel la aŭtoro de la lingvo de programado Python . En la Python komunumo, Van Rossum estas konata kiel " Benevolent Dictator For Life "(BDFL), signifante ke li daŭre pririgardus la Python disvolviĝo procezo, farante decidojn se necesas. [6] Li estis dungita per Google de 2005 ĝis 7 decembro 2012, kie li pasigis duonan sian tempon disvolvi la Python lingvo. En januaro 2013, Van Rossum eklaboris por Dropbox . [3]

Bill Gates estas la plej prospera desarrolladora de la listo. Gates, kun la helpo de Steve Ballmer, kreita de Microsoft en 1975 uzante sian scion de disvolviĝo kaj programado. Kiel la antaŭa CEO de Microsoft kun pura heredaĵo de $ 79 mil milionoj, estas nenia disputado ke Bill Gates scias kion faras.
# 2 Steve Wozniak
Steve Wozniak estis cofundador de Apple apud Steve Jobs. Frue Wozniak estis dungita ĉe Hewlett-Packard, kie Jobs laboris apud li, kreante mainframe komputiloj. Woz estis la teknika cerbo de la du; li ekiris al sole disvolvi la Apple mi en 1976. Li ankaŭ supervisó la dezajno de la Apple II en 1977.
# 3 Ada Lovelace
Ada Lovelace estis la unua programisto. Ŝi konata pro ŝia laboro sur la Analytical Engine, kiu estas rekonita kiel la unua algoritmo kreita kun la intenco de esti procesitaj de komputilo. Tio signifas ke Lovelace kreis la unuan komputilan programon.
# 4 de Dennis Ritchie
Dennis Ritchie estas kreditita por pionira la cifereca erao. Li kreis la C programlingvo, kiu influis plej modernaj programlingvoj kaj estas ankoraŭ uzita hodiaŭ. Ritchie ankaŭ co-kreita la Uniksa VIN.
# 5 Mark Zuckerburg
Kiam Mark Zuckerberg estis 20 jaroj maljuna li kreis Facebook. Al la komenco, Facebook estis nur por Harvard studentoj, nun fanfaronas 1,44 miliardoj ĉiumonate aktivaj uzantoj. Nun Zuckerberg valoras $ 34,8 miliardoj kaj akiris kompanioj kiel Instagram kaj WhatsApp.
# 6 Sergey Brin
Sergey Brin estas komputila sciencisto, kiu kunfondis Google kun Larry Page. Li posedas 16% de Google kaj ĝi havas reton valoras de $ 30 miliardoj. Brin kreis datumoj ministo sistemo kiu eventuale igis Google.
# 7 Lawrence Ellison
Lawrence Ellison estis la CEO kaj kunfondinto de Oracle Corporation. Orakolo estas datumbazo kompanio kiu origine inkludis datumbazojn por la CIA. Ellison havas pura heredaĵo de $ 54 miliardoj kaj estas nun la CTO kaj plenuma prezidanto de Oracle.
# 8 Larry Page
Larry Page estas la dua duono de Google; li kunfondis kun Sergey Brin. Paĝo ankaŭ posedas 16% de Google kaj ĝi havas reton valoras de $ 30 miliardoj. Li kaj Brin renkontis ĉe Stanford kaj konstruita de Google en lia dormejo antaŭ fine ĵeti ĝin en garaĝo.
# 9 Linus Torvalds
Linus Torvalds estas programaro inĝeniero kiu estis la pela forto malantaŭ la evoluo de Linukso. En 2012 li estis honorita kun la Jarmilaj Teknologio Premio de la Teknologio Akademio de Finnlando pro lia kreo de nova malfermita fonto VIN por komputiloj tutmonde. Aldone li ricevis la 2014 IEEE Computer Society Computer Pioneer Award.
# 10 Tim Berners Legas
Tim Berners Lee estis la inventinto de la World Wide Retejo. En 1989 li proponis info demarŝo sistemo. Poste Legas implementado la unua sukcesa komunikado inter HTTP kliento kaj servilo per la Interreto. Nuntempe li supervisa la TTT la daŭra disvolviĝo kiel la direktoro de la W3C (World Wide Web Consortium).
Se ni lasis iu el ni scias, kiu estas en la komentoj! Ekzistas multajn modelojn en programado rigardi ĝis. Io estas ebla en la tech mondo; fari ĝin punkto por fariĝi parto de tiu lerta.


# 11 Bill Gates

sábado, 1 de agosto de 2015

Voĉa Rekono kun Pocketsphinx en Python

originala fonto: https://mattze96.safe-ws.de/blog/?p=640

Saluton ĉiuj!Mi volas prezenti al vi mian lastan projekton:
"Germana Kontinua Parolada Rekono". Mi uzas Archlinux, do iuj ordonoj estos "Arch-specifaj". Ne foriros se vi abonas aliajn distron, ĉio estas la sama. En la proksimaj paŝoj ni instalos sphinxbase kaj pocketsphinx.Komencante, mi bezonas kompili kaj instali iun programaron. Mi havis grandan demandon, ĉar python3 estas la normo python sub ArchLinux do mi kreis ekstran PKGBUILDs por la du programoj (ili ne estas pretaj, sed funkcias, se vi interesiĝas preni rigardi la fundon de la paĝo). La ĉefa aspekto estis, ke mi povas poste forigi aŭ ĝisdatigi tiujn pakojn normale kiel aliaj programoj instalitaj tra la repositorios.

Ni krei laborante dosierujo: 

mkdir voice_recognition; cd voice_recognition 
Se vi uzas la PKGBUILDs vi povas treti la jenajn kompili kaj instali instrukciojn.Unue ni bezonas instali Sphinxbase. Mi uzas la lastan version de la GitHub-Repository.Ni klonas la foran dosieraron kun:

git clon git://github.com/cmusphinx/sphinxbase.git 

dosierujo nomita sphinxbase devus esti kreitaj. Eniri ĉi dosierujo kun:cd sphinxbase

Nun vi estas en la dosierujo. Voku la autogen.sh dosiero por krei la Muntodosieroj kaj aŭtomate kuras

./configure
kun ĝi../autogenSe vi ĉiuj dependecoj instalitaj, ni povas daŭrigi kaj kompili la fontkodojn:farasPoste instalu sphinxbase kun:sudo make installNun ni devas iri returne en la laborante dosierujo:cd ..Faru la samajn paŝojn por pocketsphinx:git clon git: //github.com/cmusphinx/pocketsphinx.git 
Entajpu la dosierujo:cd pocketsphinx 
Kuri autogen.sh./autogen 
Kompili la fontkodojn: 
farasInstali pocketsphinx: 
sudo make install 
Reiru al la laborantaj dosierujo:cd .. 
Nun la du necesaj programoj estas instalitaj. Sed la Languagemodel, Vortaro kaj HiddenMarkovModel Dosieroj mankas. <- Ĉu tio estas justa?

Por mia rekono Mi uzas la modelon de: http://goofy.zamia.org/voxforge/de/Elŝuti ĝin kuri: 

wget http://goofy.zamia.org/voxforge/de/voxforge-de-r20140813.tgz 
Nun ĉerpi ĝin:tar xvzf voxforge-de-r20140813.tgz 
En la kreita dosierujo nomita voxforge ... vi trovos sh dosiero nomita run-pocketsphinx.sh. Vi devas redaktis:cd voxforge-de-r20140813; nano run-pocketsphinx.sh 
Ŝanĝi la enhavon al la jenaj: 
#!/bin/bash
pocketsphinx_continuous \
    -hmm model_parameters/voxforge.cd_cont_3000 \
    -lw 10 -feat 1s_c_d_dd -beam 1e-80 -wbeam 1e-40 \
    -dict etc/voxforge.dic \
    -wip 0.2 \
    -agc none -varnorm no -cmn current -inmic yes \
    -lm etc/voxforge.lm.DMP
 
 

A -inmic parametro estis en la nova pocketsphinx versio aldonis, sed la voxforge dosiero ne uptodate. 

Se vi volas testi ĉiu povos simple kuras:./run-pocketsphinx.shVi devus preni iom da rezultoj. Se ne checkout la freenode kanalo #cmusphinx. Tiuj infanoj helpis min multege. (Danke alnshm kaj vklimkov)——————————————————————————————————————Se vi venis ĉi tien Mi volas prezenti vin mian python-Programm: Mi laboras sur styled-stacio versio, sed ĝi estas ankoraŭ ne estas preta. 
#!/usr/bin/env python2
from pocketsphinx import *

hmm = 'voxforge-de-r20140813/model_parameters/voxforge.cd_cont_3000'
dic = 'voxforge-de-r20140813/etc/voxforge.dic'
lm= 'voxforge-de-r20140813/etc/voxforge.lm.DMP'

config = Decoder.default_config()
config.set_string('-hmm', hmm)
config.set_string('-lm', lm)
config.set_string('-dict', dic)
config.set_string('-logfn', '/dev/null')

decoder = Decoder(config)

p = pyaudio.PyAudio()

stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
stream.start_stream()
in_speech_bf = True
decoder.start_utt('')
while True:
    buf = stream.read(1024)
    if buf:
        decoder.process_raw(buf, False, False)
        try:
            if  decoder.hyp().hypstr != '':
                print 'Partial decoding result:', decoder.hyp().hypstr
        except AttributeError:
            pass
        if decoder.get_in_speech():
            sys.stdout.write('.')
            sys.stdout.flush()
        if decoder.get_in_speech() != in_speech_bf:
            in_speech_bf = decoder.get_in_speech()
            if not in_speech_bf:
                decoder.end_utt()
                try:
                    if  decoder.hyp().hypstr != '':
                        print 'Stream decoding result:', decoder.hyp().hypstr
                except AttributeError:
                    pass
                decoder.start_utt('')
    else:
        break
decoder.end_utt()
print 'An Error occured/okazis eraron:', decoder.hyp().hypstr

Jen alfa Versio de Gtk GUI i disvolvis:https://github.com/mattze96/pocketsphinx-python

sábado, 25 de julho de 2015

Gvidilo de Aplika Programado

Sphinx-4

Gvidilo de Aplika Programado 

AVERTO: La lernilo priskribas SPHINX4 API EL LA PRE-alpha:
https://sourceforge.net/projects/cmusphinx/files/sphinx4/5prealpha/
La API priskribita tie ne estas subtenata en pli fruaj versioj

Superrigardo

Sphinx4 estas pura Java parolado rekono biblioteko. Ĝi provizas rapidan kaj facilan API por konverti la parolado registradoj en teksto helpe CMUSphinx akustiko modeloj. Ĝi povas esti uzata sur serviloj kaj en labortablo aplikoj. Beside parolado rekono Sphinx4 helpas identigi parolantoj, adapti modeloj, vicigi ekzistantajn transskribo al audio por timestamping kaj pli.
Sphinx4 Elportas usonangla kaj multaj aliaj lingvoj.

Uzante en via projektoj

Kiel ajna biblioteko en Java ĉiuj vi bezonas fari por uzi sphinx4 estas aldoni kruĉoj en dependecoj de via projekto kaj tiam vi povas skribi kodon uzante la API.
La plej facila maniero por uzi modernan sphinx4 estas uzi modernan muntaĵo iloj kiel Apache Maven aŭ Gradle. Sfinkso-4 estas disponebla kiel Maven pakaĵo en Sonatype OSS dosieraro . Uzi sphinx4 en via Maven projekto entajpi tiu deponejo en via pom.xml :
  <Projekto>
 ...
     <Repositorios>
         <Dosieraro>
             <Identigilo> instantáneas-Repo </ identigilo>
             <Url> https://oss.sonatype.org/content/repositories/snapshots </ url>
             <Ĵetoj> <ebligita> falsaj </ ebligita> </ ĵetoj>
         <Instantáneas> <ebligita> veraj </ ebligita> </ instantáneas>
         </ Dosieraro>
     </ Repositorios>
 ...
 </ Projekto> 
Tiam aldoni sphinx4-core al la projekto dependecoj:
  <Dependeco>
   <GroupId> edu.cmu.sphinx </ groupId>
   <ArtifactId> sphinx4 kerno </ artifactId>
   <Versio> 1.0-ekrankopion </ versio>
 </ Dependeco> 
Aldoni sphinx4-data al dependecoj tiel se vi volas uzi defaŭltan akustiko kaj lingvo modeloj:
  <Dependeco>
   <GroupId> edu.cmu.sphinx </ groupId>
   <ArtifactId> sphinx4-datumoj </ artifactId>
   <Versio> 1.0-ekrankopion </ versio>
 </ Dependeco> 
Multaj IDEs kiel Eklipso aŭ NetBeans aŭ Ideon havas subtenon por Maven ĉu kun plugin aŭ kun korpigitaj karakterizaĵoj. Tiukaze vi povas simple inkluzivi sphinx4 bibliotekojn en via projekto kun la helpo de IDE. Bonvolu kontroli la koncernan parton de via IDE dokumentado, ekzemple IDEO dokumentaro pri Maven .
Vi povas ankaŭ uzi Sphinx4 en ne-Maven projekto, tiukaze vi devas elŝuti bokaloj de la dosieraro permane kune kun dependecoj (kiun ni provas subteni malgrandajn) kaj inkluzivi ilin en via projekto. Vi devas sphinx4 kerno bokalon kaj sphinx4-datumoj bokalon se tuj uzos usonangla akustiko modelo. Vidu sube
Sphinx4 jar download

Bazaj Uzado

Estas pluraj altnivelaj rekono interfacoj en Sfinkso-4:
  • LiveSpeechRecognizer
  • StreamSpeechRecognizer
  • SpeechAligner
Por la plejparto de la parolado rekono laborpostenojn alta niveloj interfacoj devus sufiĉi. Kaj esence vi havos nur al instalinstrukciojn kvar atributojn:
  • Akustiko modelo.
  • Vortaro.
  • Gramatiko / Language modelo.
  • Fonto de parolado.
Unue tri atributoj estas instalinstrukciojn uzante Agordo objekto kiu pasis tiam al recognizer. La maniero por montri al la parolado fonto dependas konkretan recognizer kaj kutime estas pasita kiel metodo parametro.

Agordo

Agordo uzas provizi postulita kaj laŭvolaj atributoj al recognizer.
  Agordo agordo = nova Agordo ();

 // Retenu vojo al akustiko modelo.
 agordo. setAcousticModelPath ("rimedo: / edu / CMU / sfinkso / modeloj / eo-us / en-us");
 // Retenu pado al vortaro.
 agordo. setDictionaryPath ("rimedo: /edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
 // Ara lingvo modelo.
 agordo. setLanguageModelPath ("rimedo: /edu/cmu/sphinx/models/en-us/en-us.lm.bin"); 

LiveSpeechRecognizer

LiveSpeechRecognizer uzas mikrofonon kiel la parolado fonto.
  LiveSpeechRecognizer recognizer = nova LiveSpeechRecognizer (agordo);
 // Kreu rekono procezo rikoltiloj antaŭe kaŝmemoro datumoj.
 recognizer. startRecognition (vera);
 SpeechResult rezulto = recognizer. GetResult ();
 // Pause rekono procezo.  Ĝi povas esti rekomencita poste kun startRecognition (falsa).
 recognizer. stopRecognition (); 

StreamSpeechRecognizer

StreamSpeechRecognizer uzas InputStream kiel la parolado fonton, vi povas pasi la datumojn de la dosiero tiamaniere, vi povas pasi la datumojn de la reto socket aŭ el ekzistantaj bajto tabelo.
  StreamSpeechRecognizer recognizer = nova StreamSpeechRecognizer (agordo);
 recognizer. startRecognition (nova FileInputStream ("speech.wav"));
 SpeechResult rezulto = recognizer. GetResult ();
 recognizer. stopRecognition (); 
Vi povas retreive multnombraj rezultoj ĝis la dosiero fino:
  dum ((rezulto = recognizer.getResult ())! = null) {
     System.out.println (result.getHypothesis ());
 } 

SpeechAligner

SpeechAligner tempo-vicigas tekston kun audio parolado.
  SpeechAligner aligner = nova SpeechAligner (agordo);
 recognizer. vicigi (nova URL ("101-42.wav"), "unu ho unu kvar du"); 

SpeechResult

SpeechResult havigas aliron al diversaj partoj de la rekono rezulto, kiel rekonita parolo lerta de vortoj kun tempo poŝtmarkojn, rekono krado ks.
  // Presi parolpovo kordo sen kompletigo vortojn.
 Sistemo . eksteren. println (rezulton. getHypothesis ());

 // Get individuajn vortojn kaj iliajn tempojn.
 por (WordResult r: rezulto. getWords ()) {
     Sistemo . eksteren. println (r);
 }

 // Konservi krado en graphviz formato.
 rezulto. getLattice (). dumpDot ("lattice.dot", "krado"); 

Demos

Kelkaj specimeno donas inkludas en sphinx4 fontoj por doni vin kompreni kiel kuri Sphinx4. Vi povas kuri ilin de sphinx4-specimenoj jar:
  1. Transcriptor - pruvu kiel transskribi dosieron
  2. Dialogo - pruvu kiel gvidi dialogon kun uzanto
  3. SpeakerID - parolanto identigo
  4. Aligner - pruvo de audio al transskribo timestamping
Se vi iras por komenci kun demo bonvolu ne redakti la demo ene sphinx4 fontoj, anstataŭ kopii la kodon en vian projekton kaj modifi ŝin tie.

Konstruaĵo de fonto

Se vi volas disvolvi Sphinx4 mem vi eble volas konstrui ĝin el fonto. Sphinx4 uzas Maven muntaĵo sistemo. Simple tajpu 'mvn instali' en la supro dosierujo, ĝi kompilos kaj instali ĉiun inkludante dependecoj.
Se vi estas iranta uzi IDE, certigu ke ĝi elportas Maven projekto, tiam simple importi sphinx4 fonta kiel Maven projekto.

Troubleshooting

Vi eble renkontos malsamaj problemoj dum uzante sphinx4, bonvolu kontroli la FAQ unua antaŭ peti ilin en la forumo.
En kazo vi havas demandojn kun precizeco vi bezonos doni audio registrado vi provas rekoni, ĉiuj modeloj uzas kaj priskribas kiel redunda vi vidas estas malsama de via atendado.

terça-feira, 21 de abril de 2015

Capítulo 6. O Botão

 

6.1. Botões padrão

Temos visto quase tudo o que há para fazer no botão de controlo. É muito simples. Você pode usar a função gtk.Button () para criar um botão com uma etiqueta, passando um parâmetro de cadeia, ou um espaço em branco se a cadeia não é especificado. Depois de um depende do pacote de objetos, como um rótulo ou pixmap para este novo botão. Para fazer isso, criar uma nova caixa, e então ela objetos são colocados usando o típico pack_start() . Finalmente usado add () para colocar a caixa no botão.
A função para criar um botão é:
   botão = gtk.Button ( label = None, stock = None)
Se esta marca for utilizada como texto especificado estoque botón.Si ele é usado para selecionar uma série ícone e rótulo para o botão é especificado. As características padrão são:
   STOCK_DIALOG_INFO
   STOCK_DIALOG_WARNING
   STOCK_DIALOG_ERROR
   STOCK_DIALOG_QUESTION
   STOCK_DND
   STOCK_DND_MULTIPLE
   STOCK_ADD
   STOCK_APPLY
   STOCK_BOLD
   STOCK_CANCEL
   STOCK_CDROM
   STOCK_CLEAR
   STOCK_CLOSE
   STOCK_CONVERT
   STOCK_COPY
   STOCK_CUT
   STOCK_DELETE
   STOCK_EXECUTE
   STOCK_FIND
   STOCK_FIND_AND_REPLACE
   STOCK_FLOPPY
   STOCK_GOTO_BOTTOM
   STOCK_GOTO_FIRST
   STOCK_GOTO_LAST
   STOCK_GOTO_TOP
   STOCK_GO_BACK
   STOCK_GO_DOWN
   STOCK_GO_FORWARD
   STOCK_GO_UP
   STOCK_HELP
   STOCK_HOME
   STOCK_INDEX
   STOCK_ITALIC
   STOCK_JUMP_TO
   STOCK_JUSTIFY_CENTER
   STOCK_JUSTIFY_FILL
   STOCK_JUSTIFY_LEFT
   STOCK_JUSTIFY_RIGHT
   STOCK_MISSING_IMAGE
   STOCK_NEW
   STOCK_NO
   STOCK_OK
   STOCK_OPEN
   STOCK_PASTE
   STOCK_PREFERENCES
   STOCK_PRINT
   STOCK_PRINT_PREVIEW
   STOCK_PROPERTIES
   STOCK_QUIT
   STOCK_REDO
   STOCK_REFRESH
   STOCK_REMOVE
   STOCK_REVERT_TO_SAVED
   STOCK_SAVE
   STOCK_SAVE_AS
   STOCK_SELECT_COLOR
   STOCK_SELECT_FONT
   STOCK_SORT_ASCENDING
   STOCK_SORT_DESCENDING
   STOCK_SPELL_CHECK
   STOCK_STOP
   STOCK_STRIKETHROUGH
   STOCK_UNDELETE
   STOCK_UNDERLINE
   STOCK_UNDO
   STOCK_YES
   STOCK_ZOOM_100
   STOCK_ZOOM_FIT
   STOCK_ZOOM_IN
   STOCK_ZOOM_OUT
O programa de amostra buttons.py fornece um exemplo da utilização gtk.Button () para criar um botão com uma imagem e um rótulo nele. Separou o código para criar uma caixa a partir do resto de modo que pode ser usado na maioria dos programas. Há mais exemplos do uso de imagens mais tarde no tutorial. Figura Figura 6.1, "Botão com Pixmap e Etiqueta" mostra a janela com um botão que inclui uma imagem e um rótulo:
Figura 6.1. Botão com Pixmap e Etiqueta
Botão com Pixmap e Etiqueta

O código-fonte do programa buttons.py é:
     1 #! / Usr / bin / env python
     2
     3 # botões exemplo de inicialização buttons.py
     4
     Pygtk 5 de importação
     6 pygtk.require ('2.0')
     Gtk 7 de importação
     8
     9 # Criar um novo hbox com uma imagem e um rótulo embalado para ele
    10 # e reembolsar o caixa.
    11
    Xpm_label_box 12 def (pai, xpm_filename, label_text):
    13 # Criar caixa XPM e etiqueta
    14 box1 = gtk.HBox (gtk.FALSE, 0)
    Box1.set_border_width 15 (2)
    16
    17 # Agora chegamos à imagem
    18 image = gtk.Image ()
    19 image.set_from_file (xpm_filename)
    20
    21 # Criar um rótulo para o botão
    22 label = gtk.Label (label_text)
    23
    24 # Nós empacotamos o pixmap e a etiqueta na caixa
    25 box1.pack_start (imagem, gtk.FALSE, gtk.FALSE, 3)
    26 box1.pack_start (label, gtk.FALSE, gtk.FALSE, 3)
    27
    28 image.show ()
    29 label.show ()
    30 retorno box1
    31
    32 classe Crachás:
    33 # O nosso método de retorno usual (callback)
    Callback 34 def (self, widget, data = None):
    35 print "Olá de novo -% s foi pressionado"% dados
    36
    37 def __init __ (self):
    38 # Criar uma nova janela
    39 self.window = gtk.Window (gtk.WINDOW_TOPLEVEL)
    40
    41 self.window.set_title ("Image'd botões!")
    42
    43 # é uma boa idéia fazer isso para todas as janelas
    44 self.window.connect ("destruir", lambda wid: Gtk.main_quit ())
    45 self.window.connect ("delete_event" lambda a1, a2: Gtk.main_quit ())
    46
    47 # Montamos a largura da borda da janela
    Self.window.set_border_width 48 (10)
    49
    50 # Criar um novo botão
    51 botão = gtk.Button ()
    52
    53 # Ligue o sinal "clicado" para a nossa callback
    54 button.connect ("clicado", self.callback, "button cool")
    55
    56 # Este chamar a nossa função de criação de caixa
    57 box1 = xpm_label_box (self.window ", info.xpm", "botão cool")
    58
    59 # malas e mostrar todos os controles
    60 button.add (box1)
    61
    62 box1.show ()
    63 button.show ()
    64
    65 self.window.add (botão)
    66 self.window.show ()
    67
    68 def main ():
    69 gtk.main ()
    70 return 0
    71
    72 se __name__ == "__main__":
    73 Botões ()
    74 main ()
As linhas 12-34 definir a função auxiliar xpm_label_box () que cria uma caixa horizontal com uma borda de largura 2 (linhas 14-15) e coloca uma imagem (linhas 22-23) e uma etiqueta (linha 26).
Linhas 36-70 definir a classe Buttons . Linhas 41-70 definir o método de inicialização de instância que cria uma janela (linha 43), define o título (linha 45), liga a sinais "delete_event" e "destruir" (linhas 48-49). A linha 55 cria o botão sem rótulo. Seu sinal "clicado" está ligado ao método callback () na linha 58. A função xpm_label_box () é chamado na linha 61 para criar a imagem e etiqueta para colocar no botão na linha 64.
A função xpm_label_box () poderia ser usado para embalar XPM de rótulos e para qualquer elemento que pode ser um recipiente.
O Widget Button tem os seguintes sinais:
       Eu pressionei - emitida quando o botão é pressionado ponteiro no controle de botão

       lançado - emitida quando o botão de ponteiro é liberado dentro de Button widget

       clicado - emitida quando o botão é pressionado ponteiro e, em seguida,
 liberado no prazo de Controle Botão

       entrar - emitido quando ponteiro entra Button widget

       sair - emitida quando o ponteiro deixa Button widget

5.2. Widgets sem o Windows

 

Os seguintes controles não tem uma janela associada. Se você deseja que os eventos caputar, você tem que usar EventBox . Veja controle de seção EventBox .
   gtk.Alignment (alinhador)
   gtk.Arrow (Seta)
   gtk.Bin (Binary)
   gtk.Box (Box)
   gtk.Button (Button)
   gtk.CheckButton (Button Activation)
   gtk.Fixed (Fixo)
   gtk.Image (Imagem)
   gtk.Label (Label)
   gtk.MenuItem (item de menu)
   gtk.Notebook (Folhas de Arquivos)
   gtk.Paned (Panel)
   gtk.RadioButton (botão Exclusão Mútua)
   gtk.Range (classificação)
   gtk.ScrolledWindow (Janela Móvel)
   gtk.Separator (separador)
   gtk.Table (Tabela)
   gtk.Toolbar (barra de ferramentas)
   gtk.AspectFrame (Marco Aspect)
   gtk.Frame (Marco)
   gtk.VBox (Box Vertical)
   gtk.HBox (Horizontal Box)
   gtk.VSeparator (Separador Vertical)
   gtk.HSeparator (separador horizontal)
Vamos continuar a nossa exploração do PyGTK examinando cada controle, criando programas de exemplo simples que mostram.

Capítulo 5. Visão geral sobre Widget

 

Os passos gerais para usar um controle (widget) em PyGTK são:
  • * Você chama gtk. (Uma das muitas funções para criar um novo controle, e como detalhado nesta seção.
  • Todos os sinais e eventos que queremos usar para os manipuladores apropriados estão conectados.
  • Atributos de controle estão definidos.
  • Controle é embalado em um recipiente utilizando uma chamada como gtk.Container.add () ou gtk.Box.pack_start ().
  • Ele chama gtk.Widget.show () do controle.
show () permite GTK saber que estamos a fazer definindo os atributos de controle, e está pronto para ser mostrado. Você também pode usar gtk.Widget.hide () para desaparecer novamente. A ordem em que os controles são exibidos não é importante, mas é desejável que a janela é exibida no final para que toda a janela aparece uma vez e não visto como widgets individuais chegar na janela como eles são formados. Os filhos de um widget (uma janela também é um controle) não será exibida até a janela em si é mostrada usando o método show ().

5.1. Hierarquia de Controles

Para referência, aqui a árvore de hierarquia usado para implementar os controles aparecem. (Omitimos os controles obsoletos e classes auxiliares).
 gobject.GObject
 |
 + Gtk.Object (Object)
 | + Gtk.Widget (Control)
 | | + Gtk.Misc (Vários)
 | | | + Gtk.Label (Label)
 | | | | `Gtk.AccelLabel (EtiquetaAceleradora)
 | | | + Gtk.Arrow (Seta)
 | | | `Gtk.Image (Imagem)
 | | + Gtk.Container (Container)
 | | | + Gtk.Bin (Binary)
 | | | | + Gtk.Alignment (alinhador)
 | | | | + Gtk.Frame (Marco)
 | | | | | `Gtk.AspectFrame (Marco proporcional)
 | | | | + Gtk.Button (Button)
 | | | | | + Gtk.ToggleButton (Alterar Button)
 | | | | | | `(Button Activation) Gtk.CheckButton
 | | | | | | `Gtk.RadioButton (botão Exclusão Mútua)
 | | | | | + Gtk.ColorButton (Color botão de seleção)
 | | | | | + Gtk.FontButton (Fonte Botão de selecção)
 | | | | | `Gtk.OptionMenu (menu de configuração)
 | | | | + Gtk.Item (elemento)
 | | | | | + Gtk.MenuItem (item de menu)
 | | | | | + Gtk.CheckMenuItem (item de menu Hover)
 | | | | | | `Gtk.RadioMenuItem (Exclusão Mútua menu do elemento)
 | | | | | + Gtk.ImageMenuItem (item de menu de imagem)
 | | | | | + Gtk.SeparatorMenuItem (Menu Separação Elemento)
 | | | | | `Gtk.TearoffMenuItem (Menu removível)
 | | | | + Gtk.Window (Janela)
 | | | | | + Gtk.Dialog (Dialogue)
 | | | | | | + Gtk.ColorSelectionDialog (escolha Diálogo de cores)
 | | | | | | + Gtk.FileChooserDialog (File Dialog Selecção)
 | | | | | | + Gtk.FileSelection (Chooser File)
 | | | | | | + Gtk.FontSelectionDialog (Selecção de diálogo Fontes)
 | | | | | | + Gtk.InputDialog (Diálogo de entrada de dados)
 | | | | | | `Gtk.MessageDialog (Dialogue Message)
 | | | | | `Gtk.Plug (pluggable)
 | | | | + Gtk.ComboBox (Box Lista suspensa)
 | | | | | `Gtk.ComboBoxEntry (Entrada Box lista suspensa)
 | | | | + Gtk.EventBox (Box Event)
 | | | | + Gtk.Expander (Expansão)
 | | | | + Gtk.HandleBox (Case Manager)
 | | | | + Gtk.ToolItem (ponto Toolbar)
 | | | | | + Gtk.ToolButton (botão da barra de ferramentas)
 | | | | | | + Gtk.ToggleToolButton (Alterar botão da barra)
 | | | | | | | `Gtk.RadioToolButton (Exclusão Mútua botão da barra)
 | | | | | `Gtk.SeparatorTooItem (elementos separadores barra de ferramentas)
 | | | | + Gtk.ScrolledWindow (Janela Móvel)
 | | | | `Gtk.Viewport (Vista)
 | | | + Gtk.Box (Box)
 | | | | + Gtk.ButtonBox (Caixa Buttons)
 | | | | | + Gtk.HButtonBox (Button Box Horizontal)
 | | | | | `Gtk.VButtonBox (Button Box Vertical)
 | | | | + Gtk.VBox (Box Vertical)
 | | | | | + Gtk.ColorSelection (Color Selector)
 | | | | | + Gtk.FontSelection (Selector Fonts)
 | | | | | `Gtk.GammaCurve (Gamma Curve)
 | | | | `Gtk.HBox (Horizontal Box)
 | | | | + Gtk.Combo (lista suspensa)
 | | | | `Gtk.Statusbar (Barra de Status)
 | | | + Gtk.Fixed (Fixo)
 | | | + Gtk.Paned (Panel)
 | | | | + Gtk.HPaned (Painel Horizontal)
 | | | | `Gtk.VPaned (Painel Vertical)
 | | | + Gtk.Layout (Provisão)
 | | | + Gtk.MenuShell (Menu Console)
 | | | | + Gtk.MenuBar (Bar Menu)
 | | | | `Gtk.Menu (Menu)
 | | | + Gtk.Notebook (Folhas de Arquivos)
 | | | + Gtk.Socket (entrada)
 | | | + Gtk.Table (Tabela)
 | | | + Gtk.TextView (TextView)
 | | | + Gtk.Toolbar (barra de ferramentas)
 | | | `Gtk.TreeView (Tree View)
 | | + Gtk.Calendar (Calendar)
 | | + Gtk.DrawingArea (Área de Desenho)
 | | | `Gtk.Curve (Curva)
 | | + Gtk.Entry (Entrada de Texto)
 | | | `Gtk.SpinButton (Button Aumento / redução)
 | | + Gtk.Ruler (Rule)
 | | | + Gtk.HRuler (barra horizontal)
 | | | `Gtk.VRuler (Regra Vertical)
 | | + Gtk.Range (classificação)
 | | | + Gtk.Scale (classificação)
 | | | | + Gtk.HScale (Escala Horizontal)
 | | | | `Gtk.VScale (Escala Vertical)
 | | | `Gtk.Scrollbar (barra de rolagem)
 | | | + Gtk.HScrollbar (barra de rolagem horizontal)
 | | | `Gtk.VScrollbar (Vertical Scroll Bar)
 | | + Gtk.Separator (separador)
 | | | + Gtk.HSeparator (Separator Horizontal)
 | | | `Gtk.VSeparator (Separador Vertical)
 | | + Gtk.Invisible (Invisible)
 | | + Gtk.Progress (Elemento Progress)
 | | | `Gtk.ProgressBar (Progress Bar)
 | + Gtk.Adjustment (Set)
 | + Gtk.CellRenderer (Cell Viewer)
 | | + Gtk.CellRendererPixbuf (Visualizador de Imagens celular)
 | | + Gtk.CellRendererText (Texto celular Viewer)
 | | + (Activation celular Display) Gtk.CellRendererToggle
 | + (Selecção de Filtro de Arquivo) Gtk.FileFilter
 | + Gtk.ItemFactory (Itens de fábrica)
 | + Gtk.Tooltips (faixas)
 | `Gtk.TreeViewColumn (Coluna Tree View)
 + Gtk.Action (Ação)
 | + Gtk.ToggleAction (Ação Alterar)
 | | `Gtk.RadioAction (Ação Exclusão Mútua)
 + Gtk.ActionGroup (Grupo Share)
 + Gtk.EntryCompletion (Entrada Concluído)
 + Gtk.IconFactory (Ícones de fábrica)
 + Gtk.IconTheme (Tema Icons)
 + Gtk.IMContext (Input Method Contexto)
 | + Gtk.IMContextSimple (Contexto método de entrada simples)
 | `Gtk.IMMulticontext (Contexto Multiple Input Method)
 + Gtk.ListStore (Lista de Compras)
 + Gtk.RcStyle (Recurso de Styles)
 + Gtk.Settings (Opções)
 + Gtk.SizeGroup (Grupo Size)
 + Gtk.Style (Style)
 + Gtk.TextBuffer (texto Buffer)
 + Gtk.TextChildAnchor (Anchor Text Filho)
 + Gtk.TextMark (Mark texto)
 + Gtk.TextTag (rótulo de texto)
 + Gtk.TextTagTable (Tabela TextTags)
 + Gtk.TreeModelFilter (Model Árvore Filtering)
 + Gtk.TreeModelSort (Model Árvore Sort)
 + Gtk.TreeSelection (Seleção da Árvore)
 + Gtk.TreeStore (Warehouse em Tree)
 + Gtk.UIManager (Interfaces User Manager)
 + Gtk.WindowGroup Group (Windows)
 + Gtk.gdk.DragContext (Contexto Arraste)
 + Gtk.gdk.Screen (Tela)
 + Gtk.gdk.Pixbuf (tampão de pixels)
 + Gtk.gdk.Drawable (drawable)
 | + Gtk.gdk.Pixmap (Bitmap)
 + Gtk.gdk.Image (Imagem)
 + Gtk.gdk.PixbufAnimation (Animação)
 + Gtk.gdk.Device (Dispositivo de Entrada)

 gobject.GObject
 |
 + Gtk.CellLayout (arranjo das células)
 + Gtk.Editable (editável)
 + Gtk.CellEditable (Editor celular)
 + Gtk.FileChooser (Arquivos Selecionados)
 + Gtk.TreeModel (Model Tree)
 + Gtk.TreeDragSource (Drag Source na árvore)
 + Gtk.TreeDragDest (destino Arraste na Árvore)
 + Gtk.TreeSortable (Árvore Sortable)