<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUYNR305fip7ImA9WhVTEEw.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502</id><updated>2012-02-23T09:13:16.326-08:00</updated><category term="PySide" /><category term="PyQt4" /><category term="POO" /><category term="Iniciando no Python" /><title>Pythonando</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://pyscript.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Pythonando" /><feedburner:info uri="pythonando" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkEFRX0yeCp7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-6904589120713742985</id><published>2011-09-25T05:43:00.000-07:00</published><updated>2011-09-25T05:43:34.390-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:43:34.390-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Dialogs em PySide ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;QtGui.QColorDialog&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;O QtGui.QColorDialog fornece um widget de dialog para selecionar cores.&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we select a color value&lt;/span&gt;
&lt;span style="color: blue;"&gt;from the QtGui.QColorDialog and change the background&lt;/span&gt;
&lt;span style="color: blue;"&gt;color of a QtGui.QFrame widget. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):      

        col = QtGui.QColor(&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;) 

        self.btn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Dialog'&lt;/span&gt;, self)
        self.btn.move(&lt;span style="color: blue;"&gt;20&lt;/span&gt;, &lt;span style="color: blue;"&gt;20&lt;/span&gt;)

        self.btn.clicked.connect(self.showDialog)

        self.frm = QtGui.QFrame(self)
        self.frm.setStyleSheet(&lt;span style="color: blue;"&gt;"QWidget { background-color: %s }"&lt;/span&gt; 
            % col.name())
        self.frm.setGeometry(&lt;span style="color: blue;"&gt;130&lt;/span&gt;, &lt;span style="color: blue;"&gt;22&lt;/span&gt;, &lt;span style="color: blue;"&gt;100&lt;/span&gt;, &lt;span style="color: blue;"&gt;100&lt;/span&gt;)            
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;180&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Color dialog'&lt;/span&gt;)
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; showDialog(self):
      
        col = QtGui.QColorDialog.getColor()

        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; col.isValid():
            self.frm.setStyleSheet(&lt;span style="color: blue;"&gt;"QWidget { background-color: %s }"&lt;/span&gt;
                % col.name())
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O exemplo de aplicação mostra um botão e um QtGui.QFrame . O fundo widget está definido para a cor preta. Usando o QtGui.QColorDialog , podemos mudar seu fundo. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;col = QtGui.QColor(&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;) 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Esta é uma cor inicial do fundo QtGui.QFrame . &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;col = QtGui.QColorDialog.getColor()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Esta linha irá aparecer o QtGui.QColorDialog . &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; col.isValid():
    self.frm.setStyleSheet(&lt;span style="color: blue;"&gt;"QWidget { background-color: %s }"&lt;/span&gt;
        % col.name())
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Vamos verificar se a cor é válida. Se clicarmos no botão de cancelar, não obteremos cor válida. Se a cor é válida, mudamos a cor de fundo usando a paleta de cores. &lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/colordialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://zetcode.com/img/gui/pyside/colordialog.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-6904589120713742985?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1GxKcAOXRZvX-F28vLX0Wmv35Xk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1GxKcAOXRZvX-F28vLX0Wmv35Xk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1GxKcAOXRZvX-F28vLX0Wmv35Xk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1GxKcAOXRZvX-F28vLX0Wmv35Xk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/2VKwirIHlaE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/6904589120713742985/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/dialogs-em-pyside-parte-2.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6904589120713742985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6904589120713742985?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/2VKwirIHlaE/dialogs-em-pyside-parte-2.html" title="Dialogs em PySide ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/dialogs-em-pyside-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUESXkzfyp7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-2481840750344555499</id><published>2011-09-25T05:36:00.000-07:00</published><updated>2011-09-25T05:36:48.787-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:36:48.787-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Dialogs em PySide ( Parte 1 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Janelas de diálogo ou caixas de diálogo são comuns em aplicações GUI moderna. Um diálogo é definido como uma conversa entre duas ou mais pessoas. Em uma aplicação de computador uma caixa de diálogo é uma janela que é utilizada para "conversar" com a aplicação.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Uma caixa de diálogo é usado para entrada de dados, alterar dados, altere as configurações do aplicativo Dialogs etc, são meios importantes de comunicação entre um usuário e um programa de computador.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;QtGui.QInputDialog&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O QtGui.QInputDialog fornece um diálogo de simples conveniência para obter um valor único de um usuário. O valor de entrada pode ser uma string, um número ou um item de uma lista. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we receive data from&lt;/span&gt;
&lt;span style="color: blue;"&gt;a QtGui.QInputDialog dialog. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):      

        self.btn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Dialog'&lt;/span&gt;, self)
        self.btn.move(&lt;span style="color: blue;"&gt;20&lt;/span&gt;, &lt;span style="color: blue;"&gt;20&lt;/span&gt;)
        self.btn.clicked.connect(self.showDialog)
        
        self.le = QtGui.QLineEdit(self)
        self.le.move(&lt;span style="color: blue;"&gt;130&lt;/span&gt;, &lt;span style="color: blue;"&gt;22&lt;/span&gt;)
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;290&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Input dialog'&lt;/span&gt;)
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; showDialog(self):
        text, ok = QtGui.QInputDialog.getText(self, &lt;span style="color: blue;"&gt;'Input Dialog'&lt;/span&gt;, 
            &lt;span style="color: blue;"&gt;'Enter your name:'&lt;/span&gt;)
        
        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; ok:
            self.le.setText(str(text))
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O exemplo tem um botão e uma linha widget de edição. O botão mostra o dialog de entrada para obter valores de texto. O texto digitado será exibido no widget linha de edição. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;text, ok = QtGui.QInputDialog.getText(self, &lt;span style="color: blue;"&gt;'Input Dialog'&lt;/span&gt;, 
    &lt;span style="color: blue;"&gt;'Enter your name:'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Esta linha apresenta o dialog de entrada. A primeira string é o título do dialog, a segunda é uma mensagem na caixa do dialog. A caixa do dialog retorna o texto digitado e um valor booleano. Se clicar no botão ok, o valor booleano seria verdadeiro, falso caso contrário. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; ok:
    self.le.setText(str(text))
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O texto que recebemos na caixa de diálogo é definido para o widget linha de edição. &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/inputdialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/inputdialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-2481840750344555499?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kidswnZYuRlZNItOU_u2MJsiUEc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kidswnZYuRlZNItOU_u2MJsiUEc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kidswnZYuRlZNItOU_u2MJsiUEc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kidswnZYuRlZNItOU_u2MJsiUEc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/kDBagM5bj5c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/2481840750344555499/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/dialogs-em-pyside-parte-1.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2481840750344555499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2481840750344555499?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/kDBagM5bj5c/dialogs-em-pyside-parte-1.html" title="Dialogs em PySide ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/dialogs-em-pyside-parte-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIASXo9fip7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-1933842733480773896</id><published>2011-09-25T05:25:00.000-07:00</published><updated>2011-09-25T05:25:48.466-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:25:48.466-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Eventos e Sinais no PySide ( Parte 4 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Emitindo Sinais&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Objetos criados a partir QtCore.QObject pode emitir sinais. Se clicarmos no botão, um sinal clicked é gerado. No exemplo a seguir veremos, como nós podemos emitir um sinal qualquer. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we show how to emit a&lt;/span&gt;
&lt;span style="color: blue;"&gt;signal. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Communicate(QtCore.QObject):
    
    closeApp = QtCore.Signal()

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QMainWindow):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):      

        self.c = Communicate()
        self.c.closeApp.connect(self.close)       
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;290&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Emit signal'&lt;/span&gt;)
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; mousePressEvent(self, event):
        
        self.c.closeApp.emit()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Criamos um novo sinal chamado closeApp . Este sinal é emitido, quando o mouse é pressionado. O sinal é conectado ao close() slot do QtGui.QMainWindow .&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Communicate(QtCore.QObject):
    
    closeApp = QtCore.Signal()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos uma classe com base em uma QtCore.QObject . Ele cria um sinal closeApp quando instanciado. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.c = Communicate()
self.c.closeApp.connect(self.close)     
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós conectar um close() slot do QtGui.QMainWindow ao sinal closeApp.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; mousePressEvent(self, event):
    
    self.c.closeApp.emit()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Quando clicamos na janela com o mouse, o closeApp sinal é emitido. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-1933842733480773896?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EQhHCRB7TAm9zdtmtmxA_UN_vws/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EQhHCRB7TAm9zdtmtmxA_UN_vws/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EQhHCRB7TAm9zdtmtmxA_UN_vws/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EQhHCRB7TAm9zdtmtmxA_UN_vws/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/alL80svTfY4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/1933842733480773896/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-4.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1933842733480773896?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1933842733480773896?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/alL80svTfY4/eventos-e-sinais-no-pyside-parte-4.html" title="Eventos e Sinais no PySide ( Parte 4 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUARH86cCp7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-399160971131010408</id><published>2011-09-25T05:20:00.000-07:00</published><updated>2011-09-25T05:20:45.118-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:20:45.118-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Eventos e Sinais no PySide ( Parte 3 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Remetente evento&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Às vezes é conveniente saber, que widget é o remetente de um sinal. Para isso, o PySide tem um método sender(). &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we determine the event sender&lt;/span&gt;
&lt;span style="color: blue;"&gt;object.&lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QMainWindow):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):      

        btn1 = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"Button 1"&lt;/span&gt;, self)
        btn1.move(&lt;span style="color: blue;"&gt;30&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)

        btn2 = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"Button 2"&lt;/span&gt;, self)
        btn2.move(&lt;span style="color: blue;"&gt;150&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)
      
        btn1.clicked.connect(self.buttonClicked)            
        btn2.clicked.connect(self.buttonClicked)
        
        self.statusBar()
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;290&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Event sender'&lt;/span&gt;)
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; buttonClicked(self):
      
        sender = self.sender()
        self.statusBar().showMessage(sender.text() + &lt;span style="color: blue;"&gt;' was pressed'&lt;/span&gt;)
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós temos dois botões em nosso exemplo. No método buttonClicked() nós determinamos que nós temos um botão clicado chamando método sender(). &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;btn1.clicked.connect (self.buttonClicked)            
 btn2.clicked.connect (self.buttonClicked)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Ambos os botões estão ligados ao mesmo slot. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; buttonClicked(self):
  
    sender = self.sender()
    self.statusBar().showMessage(sender.text() + &lt;span style="color: blue;"&gt;' was pressed'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós determinamos a fonte do sinal chamando o método sender(). Na barra de status do pedido, vamos mostrar o Label do botão sendo pressionado.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/sender.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/sender.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-399160971131010408?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SE7Ay8ytoqztTHitBYnePiROSEU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SE7Ay8ytoqztTHitBYnePiROSEU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SE7Ay8ytoqztTHitBYnePiROSEU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SE7Ay8ytoqztTHitBYnePiROSEU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/cghvZc1KaV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/399160971131010408/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-3.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/399160971131010408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/399160971131010408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/cghvZc1KaV0/eventos-e-sinais-no-pyside-parte-3.html" title="Eventos e Sinais no PySide ( Parte 3 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4HR34yfSp7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-1180262139892532722</id><published>2011-09-25T05:15:00.000-07:00</published><updated>2011-09-25T05:15:36.095-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:15:36.095-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Eventos e Sinais no PySide ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Reimplementar manipulador de eventos&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Eventos em PySide são processados, muitas vezes por reimplementação de manipuladores de eventos.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we reimplement an &lt;/span&gt;
&lt;span style="color: blue;"&gt;event handler. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):      
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Event handler'&lt;/span&gt;)
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; keyPressEvent(self, e):
        
        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.key() == QtCore.Qt.Key_Escape:
            self.close()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Em nosso exemplo, vamos reimplementar o keyPressEvent() manipulador de eventos. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; keyPressEvent(self, e):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.key() == QtCore.Qt.Key_Escape:
        self.close()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Se clicarmos no botão de escape, o aplicativo é encerrado. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-1180262139892532722?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IsTQ0HEniS_kwIFYT-TMmX3gT84/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IsTQ0HEniS_kwIFYT-TMmX3gT84/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IsTQ0HEniS_kwIFYT-TMmX3gT84/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IsTQ0HEniS_kwIFYT-TMmX3gT84/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/gYDC9qnGwzc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/1180262139892532722/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-2.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1180262139892532722?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1180262139892532722?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/gYDC9qnGwzc/eventos-e-sinais-no-pyside-parte-2.html" title="Eventos e Sinais no PySide ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHRn49cSp7ImA9WhdVGUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-2701875891131200538</id><published>2011-09-25T05:08:00.000-07:00</published><updated>2011-09-25T05:08:57.069-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T05:08:57.069-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Eventos e Sinais no PySide ( Parte 1 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Nesta parte do tutorial de programação PySide, vamos explorar os eventos e sinais que ocorrem em aplicações. &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Eventos&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Os eventos são uma parte importante em qualquer programa GUI. Eventos são gerados por usuários ou pelo sistema. Quando chamamos a aplicação com o método exec_(), a aplicação entra no loop principal. O loop principal obtém eventos e os envia para os objetos. PySide tem um sinal único e mecanismo de slot.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Todas as aplicações GUI são event-driven. Uma aplicação reage a diferentes tipos de eventos que são gerados durante a sua vida. Eventos são gerados principalmente pelo usuário de um aplicativo. Mas eles podem ser gerados por outros meios também. por exemplo, ligação à Internet, gerenciador de janelas, timer. No modelo de evento, há três participantes:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;fonte de evento&lt;/li&gt;
&lt;li&gt;objeto de evento&lt;/li&gt;
&lt;li&gt;destino do evento &lt;/li&gt;
&lt;/ul&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;A origem do evento é o objeto cujo estado muda. Ele gera eventos. O objeto de evento (Event) encapsula as mudanças de estado na origem do evento. O destino do evento é o objeto que quer ser notificado. &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Sinais e slots são usados ​​para comunicação entre objetos. Um sinal é emitido quando um determinado evento ocorre. Um slot pode ser qualquer callable Python. Um slot é chamado quando um sinal conectado a ele é emitido. &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Sinais e Slots&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Este é um exemplo simples, demonstrando sinais e slots em PySide.&lt;br /&gt;
&lt;/div&gt;&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we connect a signal&lt;/span&gt;
&lt;span style="color: blue;"&gt;of a QtGui.QSlider to a slot &lt;/span&gt;
&lt;span style="color: blue;"&gt;of a QtGui.QLCDNumber. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        lcd = QtGui.QLCDNumber(self)
        sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)

        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(sld)

        self.setLayout(vbox)
        sld.valueChanged.connect(lcd.display)
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Signal &amp;amp; slot'&lt;/span&gt;)
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
No nosso exemplo, vamos mostrar uma QtGui.QLCDNumber e um QtGui.QSlider .Nós mudamos o número lcd com o slider .&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;sld.valueChanged.connect (lcd.display)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui nós ligar um valueChanged sinal do controle do slider para a display do slot do número lcd.&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O remetente é um objeto que emite um sinal. O receptor é o objeto, que recebe o sinal. O slot é o método, que reage ao sinal.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/sigslot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/sigslot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-2701875891131200538?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8nT4RojsINnc0m3fDQww1hpk4Vw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8nT4RojsINnc0m3fDQww1hpk4Vw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8nT4RojsINnc0m3fDQww1hpk4Vw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8nT4RojsINnc0m3fDQww1hpk4Vw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/K3Ro9Gz4w8s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/2701875891131200538/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-1.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2701875891131200538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2701875891131200538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/K3Ro9Gz4w8s/eventos-e-sinais-no-pyside-parte-1.html" title="Eventos e Sinais no PySide ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/eventos-e-sinais-no-pyside-parte-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFSHc6fip7ImA9WhdVGEQ.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-6481022974217788730</id><published>2011-09-24T12:46:00.000-07:00</published><updated>2011-09-24T12:46:59.916-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-24T12:46:59.916-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Gerenciamento de layout em PySide ( Parte 4 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Exemplo de revisão&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Widgets podem abranger várias colunas ou linhas em uma grade. O exemplo a seguir, ilustra melhor isso. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we create a bit&lt;/span&gt;
&lt;span style="color: blue;"&gt;more complicated window layout using&lt;/span&gt;
&lt;span style="color: blue;"&gt;the QGridLayout manager. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        title = QtGui.QLabel(&lt;span style="color: blue;"&gt;'Title'&lt;/span&gt;)
        author = QtGui.QLabel(&lt;span style="color: blue;"&gt;'Author'&lt;/span&gt;)
        review = QtGui.QLabel(&lt;span style="color: blue;"&gt;'Review'&lt;/span&gt;)

        titleEdit = QtGui.QLineEdit()
        authorEdit = QtGui.QLineEdit()
        reviewEdit = QtGui.QTextEdit()

        grid = QtGui.QGridLayout()
        grid.setSpacing(&lt;span style="color: blue;"&gt;10&lt;/span&gt;)

        grid.addWidget(title, &lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;)
        grid.addWidget(titleEdit, &lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;)

        grid.addWidget(author, &lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;)
        grid.addWidget(authorEdit, &lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;)

        grid.addWidget(review, &lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;)
        grid.addWidget(reviewEdit, &lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;5&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;)
        
        self.setLayout(grid) 
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;350&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Review'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;Aqui nós criamos uma janela na qual temos três Labels, duas linhas de texto edições e um widget de edição. O layout é feito com o QtGui.QGridLayout . &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;grid = QtGui.QGridLayout()
grid.setSpacing(&lt;span style="color: blue;"&gt;10&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um grid layout e set spacing between entre os widgets. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;grid.addWidget(reviewEdit, &lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;5&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Se adicionar um widget a uma grade, podemos oferecer extensão de linha e extensão de coluna do widget. No nosso caso, fazemos o widget reviewEdit abrangendo cinco linhas.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/review.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://zetcode.com/img/gui/pyside/review.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-6481022974217788730?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZnwgzFI-a-k3MLWDfEsFSZPrqs8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnwgzFI-a-k3MLWDfEsFSZPrqs8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZnwgzFI-a-k3MLWDfEsFSZPrqs8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnwgzFI-a-k3MLWDfEsFSZPrqs8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/Axw_MrLxydM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/6481022974217788730/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/exemplo-de-revisao-widgets-podem.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6481022974217788730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6481022974217788730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/Axw_MrLxydM/exemplo-de-revisao-widgets-podem.html" title="Gerenciamento de layout em PySide ( Parte 4 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/exemplo-de-revisao-widgets-podem.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQNSXs_fCp7ImA9WhdVGEQ.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-372056360418868257</id><published>2011-09-24T12:26:00.000-07:00</published><updated>2011-09-24T12:26:38.544-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-24T12:26:38.544-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Gerenciamento de layout em PySide ( Parte 3 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Grid layout&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;A classe de layout mais universal em PySide é o grid layout. Este layout divide o espaço em linhas e colunas. Para criar um grid layout, usamos o a classe QtGui.QGridLayout. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we create a skeleton&lt;/span&gt;
&lt;span style="color: blue;"&gt;of a calculator using a QGridLayout.&lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        names = [&lt;span style="color: blue;"&gt;'Cls'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'Bck'&lt;/span&gt;, &lt;span style="color: blue;"&gt;''&lt;/span&gt;, &lt;span style="color: blue;"&gt;'Close'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'7'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'8'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'9'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'/'&lt;/span&gt;,
                &lt;span style="color: blue;"&gt;'4'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'5'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'6'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'*'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'1'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'2'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'3'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'-'&lt;/span&gt;,
                &lt;span style="color: blue;"&gt;'0'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'.'&lt;/span&gt;, &lt;span style="color: blue;"&gt;'='&lt;/span&gt;, &lt;span style="color: blue;"&gt;'+'&lt;/span&gt;]

        grid = QtGui.QGridLayout()

        j = &lt;span style="color: blue;"&gt;0&lt;/span&gt;
        pos = [(&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;), (&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;), (&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;), (&lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;3&lt;/span&gt;),
                (&lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;), (&lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;), (&lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;), (&lt;span style="color: blue;"&gt;1&lt;/span&gt;, &lt;span style="color: blue;"&gt;3&lt;/span&gt;),
                (&lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;), (&lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;), (&lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;), (&lt;span style="color: blue;"&gt;2&lt;/span&gt;, &lt;span style="color: blue;"&gt;3&lt;/span&gt;),
                (&lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;), (&lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;), (&lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;), (&lt;span style="color: blue;"&gt;3&lt;/span&gt;, &lt;span style="color: blue;"&gt;3&lt;/span&gt; ),
                (&lt;span style="color: blue;"&gt;4&lt;/span&gt;, &lt;span style="color: blue;"&gt;0&lt;/span&gt;), (&lt;span style="color: blue;"&gt;4&lt;/span&gt;, &lt;span style="color: blue;"&gt;1&lt;/span&gt;), (&lt;span style="color: blue;"&gt;4&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;), (&lt;span style="color: blue;"&gt;4&lt;/span&gt;, &lt;span style="color: blue;"&gt;3&lt;/span&gt;)]

        &lt;span style="color: navy; font-weight: bold;"&gt;for&lt;/span&gt; i &lt;span style="font-weight: bold;"&gt;in&lt;/span&gt; names:
            button = QtGui.QPushButton(i)
            &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; j == &lt;span style="color: blue;"&gt;2&lt;/span&gt;:
                grid.addWidget(QtGui.QLabel(&lt;span style="color: blue;"&gt;''&lt;/span&gt;), &lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;)
            &lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;: grid.addWidget(button, pos[j][&lt;span style="color: blue;"&gt;0&lt;/span&gt;], pos[j][&lt;span style="color: blue;"&gt;1&lt;/span&gt;])
            j = j + &lt;span style="color: blue;"&gt;1&lt;/span&gt;

        self.setLayout(grid)   
        
        self.move(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Calculator'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No nosso exemplo, criamos uma grade de botões. Para preencher uma lacuna, e também adicionamos um QtGui.QLabel widget. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;grid = QtGui.QGridLayout()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Aqui nós criamos um &lt;/span&gt;grid layout.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; j == &lt;span style="color: blue;"&gt;2&lt;/span&gt;:
    grid.addWidget(QtGui.QLabel(&lt;span style="color: blue;"&gt;''&lt;/span&gt;), &lt;span style="color: blue;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;2&lt;/span&gt;)
&lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;: grid.addWidget(button, pos[j][&lt;span style="color: blue;"&gt;0&lt;/span&gt;], pos[j][&lt;span style="color: blue;"&gt;1&lt;/span&gt;])
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Para adicionar um widget a uma grade, chamamos de método addWidget(). Os argumentos são o widget, a linha e o número da coluna.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/calculator.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://zetcode.com/img/gui/pyside/calculator.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-372056360418868257?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iWxxnSUKOh_tq4eRSBDBW7qIa9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iWxxnSUKOh_tq4eRSBDBW7qIa9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iWxxnSUKOh_tq4eRSBDBW7qIa9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iWxxnSUKOh_tq4eRSBDBW7qIa9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/amN5fNjnzlg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/372056360418868257/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte_1212.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/372056360418868257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/372056360418868257?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/amN5fNjnzlg/gerenciamento-de-layout-em-pyside-parte_1212.html" title="Gerenciamento de layout em PySide ( Parte 3 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte_1212.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04DQ34yfSp7ImA9WhdVGEQ.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-2422327648918486320</id><published>2011-09-24T12:19:00.000-07:00</published><updated>2011-09-24T12:19:32.095-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-24T12:19:32.095-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Gerenciamento de layout em PySide ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Box Layout&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Já por sua vez, o gerenciamento de layout com as classes layout é muito mais flexível e prático. É a maneira preferida para colocar widgets em uma janela. As classes básicas de layout são QtGui.QHBoxLayout e QtGui.QVBoxLayout . Eles alinham os widgets horizontalmente e verticalmente.&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Imagine que queria colocar dois botões no canto inferior direito. Para criar esse layout , vamos usar uma caixa horizontal e um vertical. Para criar o espaço necessário, iremos adicionar um &lt;b style="font-family: Verdana,sans-serif;"&gt;stretch factor&lt;/b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;In this example, we position two push&lt;/span&gt;
&lt;span style="color: blue;"&gt;buttons in the bottom-right corner &lt;/span&gt;
&lt;span style="color: blue;"&gt;of the window. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        okButton = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"OK"&lt;/span&gt;)
        cancelButton = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"Cancel"&lt;/span&gt;)

        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(&lt;span style="color: blue;"&gt;1&lt;/span&gt;)
        hbox.addWidget(okButton)
        hbox.addWidget(cancelButton)

        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(&lt;span style="color: blue;"&gt;1&lt;/span&gt;)
        vbox.addLayout(hbox)
        
        self.setLayout(vbox)    
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Absolute'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O exemplo coloca dois botões no canto inferior direito da janela. Neste caso, nós usamos as QtGui.HBoxLayout e QtGui.QVBoxLayout . &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;okButton = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"OK"&lt;/span&gt;)
cancelButton = QtGui.QPushButton(&lt;span style="color: blue;"&gt;"Cancel"&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui iremos criar dois push buttons.. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;hbox = QtGui.QHBoxLayout()
hbox.addStretch(&lt;span style="color: blue;"&gt;1&lt;/span&gt;)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um  horizontal box layout. Adicionamos um stretch factor e dois botões. O trecho adiciona um stretchable spacer antes de os dois botões. Isto irá empurrá-los para a direita da janela. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;vbox = QtGui.QVBoxLayout()
vbox.addStretch(&lt;span style="color: blue;"&gt;1&lt;/span&gt;)
vbox.addLayout(hbox)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Para criar o layout necessário, nós colocamos um layout horizontal para uma vertical. O stretch factor na caixa vertical vai empurrar a caixa horizontal com os botões na parte inferior da janela. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.setLayout(vbox)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;E finalmente, vamos definir o layout de base da janela. &lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/buttons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/buttons.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-2422327648918486320?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0O5E9Qt8TLDhFdqEERI0tyU0EZs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0O5E9Qt8TLDhFdqEERI0tyU0EZs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0O5E9Qt8TLDhFdqEERI0tyU0EZs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0O5E9Qt8TLDhFdqEERI0tyU0EZs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/O3WPGoKAwrE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/2422327648918486320/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte_24.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2422327648918486320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2422327648918486320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/O3WPGoKAwrE/gerenciamento-de-layout-em-pyside-parte_24.html" title="Gerenciamento de layout em PySide ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UDRHgzeyp7ImA9WhdVGEQ.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-1832988790021577518</id><published>2011-09-24T12:07:00.000-07:00</published><updated>2011-09-24T12:07:55.683-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-24T12:07:55.683-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Gerenciamento de layout em PySide ( Parte 1 )</title><content type="html">&lt;span style="font-family: Verdana,sans-serif;"&gt;Uma coisa importante em programação GUI é o gerenciamento de layout. Gerenciamento de layout é a maneira como colocamos os widgets na janela. A gestão pode ser feito de duas maneiras. Podemos usar o posicionamento absoluto ou classes layout. &lt;/span&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Posicionamento absoluto&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O programador especifica a posição eo tamanho de cada elemento em pixels. Quando você usa o posicionamento absoluto, você tem que entender várias coisas.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="font-family: Verdana,sans-serif;"&gt;&lt;li&gt;o tamanho e a posição de um widget não mudam se você redimensionar uma janela&lt;/li&gt;
&lt;li&gt;aplicativos podem parecer diferentes em várias plataformas&lt;/li&gt;
&lt;li&gt;mudar fontes em seu aplicativo pode estragar o layout&lt;/li&gt;
&lt;li&gt;se você decidir mudar seu layout, você deve refazer completamente o seu layout, e será tedioso e demorado &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This example shows three labels on a window&lt;/span&gt;
&lt;span style="color: blue;"&gt;using absolute positioning. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        label1 = QtGui.QLabel(&lt;span style="color: blue;"&gt;'Zetcode'&lt;/span&gt;, self)
        label1.move(&lt;span style="color: blue;"&gt;15&lt;/span&gt;, &lt;span style="color: blue;"&gt;10&lt;/span&gt;)

        label2 = QtGui.QLabel(&lt;span style="color: blue;"&gt;'tutorials'&lt;/span&gt;, self)
        label2.move(&lt;span style="color: blue;"&gt;35&lt;/span&gt;, &lt;span style="color: blue;"&gt;40&lt;/span&gt;)
        
        label3 = QtGui.QLabel(&lt;span style="color: blue;"&gt;'for programmers'&lt;/span&gt;, self)
        label3.move(&lt;span style="color: blue;"&gt;55&lt;/span&gt;, &lt;span style="color: blue;"&gt;70&lt;/span&gt;)        
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Absolute'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós simplesmente chamar o move() método para posicionar nossos widgets. No nosso caso estes elementos são rótulos. Nós posicioná-los, fornecendo as coordenadas x e y. O início do sistema de coordenadas está no canto superior esquerdo. Os valores de x cresce da esquerda para a direita. Os valores de y crescem de cima para baixo. &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/absolute.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/absolute.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-1832988790021577518?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-XPHAB7svnChFlRgjcmnowhBqKY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XPHAB7svnChFlRgjcmnowhBqKY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-XPHAB7svnChFlRgjcmnowhBqKY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XPHAB7svnChFlRgjcmnowhBqKY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/FbvpT428X7M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/1832988790021577518/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1832988790021577518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1832988790021577518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/FbvpT428X7M/gerenciamento-de-layout-em-pyside-parte.html" title="Gerenciamento de layout em PySide ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/gerenciamento-de-layout-em-pyside-parte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYBRXY8eyp7ImA9WhdVGEU.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-5264683292982986521</id><published>2011-09-24T09:02:00.000-07:00</published><updated>2011-09-24T09:02:34.873-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-24T09:02:34.873-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Menus e barras de ferramentas no PySide ( Parte 4 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Colocando em conjunto&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No último exemplo desta seção, vamos criar uma barra de menu barra de ferramentas, e uma barra de status. Vamos também criar um widget central. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
 &lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

 &lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt; ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt; This program creates a skeleton of&lt;/span&gt;
&lt;span style="color: blue;"&gt; a classic GUI application with a menubar,&lt;/span&gt;
&lt;span style="color: blue;"&gt; toolbar, statusbar and a central widget. &lt;/span&gt;

&lt;span style="color: blue;"&gt; author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt; website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt; last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt; """&lt;/span&gt;

 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
 &lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

 &lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QMainWindow):
    
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
         super(Example, self).__init__()
        
         self.initUI()
        
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):               
        
         textEdit = QtGui.QTextEdit()
         self.setCentralWidget(textEdit)

         exitAction = QtGui.QAction(&lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;, self)
         exitAction.setShortcut(&lt;span style="color: blue;"&gt;'Ctrl+Q'&lt;/span&gt;)
         exitAction.setStatusTip(&lt;span style="color: blue;"&gt;'Exit application'&lt;/span&gt;)
         exitAction.triggered.connect(self.close)

         self.statusBar()

         menubar = self.menuBar()
         fileMenu = menubar.addMenu(&lt;span style="color: blue;"&gt;'&amp;amp;File'&lt;/span&gt;)
         fileMenu.addAction(exitAction)

         toolbar = self.addToolBar(&lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;)
         toolbar.addAction(exitAction)
        
         self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;350&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;)
         self.setWindowTitle(&lt;span style="color: blue;"&gt;'Main window'&lt;/span&gt;)    
         self.show()
        
        
 &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
     app = QtGui.QApplication(sys.argv)
     ex = Example()
     sys.exit(app.exec_())


 &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
     main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;Este exemplo de código cria um esqueleto de uma aplicação GUI clássica com uma barra de ferramentas menubar, e uma barra de status.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;TextEdit QtGui.QTextEdit = ()
 self.setCentralWidget (TextEdit)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui nós criamos um texto widget de edição. Nós configuramos para ser o widget central do QtGui.QMainWindow . O Widget central ocupará todo o espaço vazio que é deixado.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/mainwindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://zetcode.com/img/gui/pyside/mainwindow.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-5264683292982986521?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s4tAeATkF6a4rZNu5d-cOClRdBs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s4tAeATkF6a4rZNu5d-cOClRdBs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s4tAeATkF6a4rZNu5d-cOClRdBs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s4tAeATkF6a4rZNu5d-cOClRdBs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/JK9VpS8NaI4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/5264683292982986521/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_24.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5264683292982986521?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5264683292982986521?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/JK9VpS8NaI4/menus-e-barras-de-ferramentas-no-pyside_24.html" title="Menus e barras de ferramentas no PySide ( Parte 4 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MDQ3g9eip7ImA9WhdVGEk.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-691361410934472522</id><published>2011-09-23T23:24:00.000-07:00</published><updated>2011-09-23T23:24:32.662-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T23:24:32.662-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Menus e barras de ferramentas no PySide ( Parte 3 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Toolbar - Barra de ferramentas&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Grupo de menus que todo aplicativo usa praticamente. Barras de ferramentas fornecem acesso rápido aos comandos mais utilizados.&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
 &lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

 &lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt; ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt; This program creates a toolbar.&lt;/span&gt;

&lt;span style="color: blue;"&gt; author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt; website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt; last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt; """&lt;/span&gt;

 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
 &lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

 &lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QMainWindow):
    
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
         super(Example, self).__init__()
        
         self.initUI()
        
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):               
        
         exitAction = QtGui.QAction(QtGui.QIcon(&lt;span style="color: blue;"&gt;'exit24.png'&lt;/span&gt;), &lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;, self)
         exitAction.setShortcut(&lt;span style="color: blue;"&gt;'Ctrl+Q'&lt;/span&gt;)
         exitAction.triggered.connect(self.close)
        
         self.toolbar = self.addToolBar(&lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;)
         self.toolbar.addAction(exitAction)
        
         self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;350&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;)
         self.setWindowTitle(&lt;span style="color: blue;"&gt;'Toolbar'&lt;/span&gt;)    
         self.show()
        
        
 &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
     app = QtGui.QApplication(sys.argv)
     ex = Example()
     sys.exit(app.exec_())


 &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
     main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No exemplo acima, criamos uma barra de ferramentas simples. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;exitAction = QtGui.QAction (QtGui.QIcon (&lt;span style="color: blue;"&gt;'exit24.png'&lt;/span&gt;), &lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;, self)
exitAction.setShortcut (&lt;span style="color: blue;"&gt;'Ctrl + Q'&lt;/span&gt;)
exitAction.triggered.connect (self.close)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Semelhante ao exemplo menubar acima, criamos um objeto da ação. O objeto tem um Label ( &lt;b&gt;nome&lt;/b&gt; ) que indica ícone ( icon ), e um shorcut. Um método de encerramento da QtGui.QMainWindow está ligado ao sinal exitAction. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.toolbar self.addToolBar = (&lt;span style="color: blue;"&gt;'Exit'&lt;/span&gt;)
 self.toolbar.addAction (exitAction)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;E como resultado, teremos isto:&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/toolbar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/toolbar.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-691361410934472522?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c78O_JBeLPpJO1P4hjZbaJmcLLM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c78O_JBeLPpJO1P4hjZbaJmcLLM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c78O_JBeLPpJO1P4hjZbaJmcLLM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c78O_JBeLPpJO1P4hjZbaJmcLLM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/3p7Qp-hfnbE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/691361410934472522/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_9719.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/691361410934472522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/691361410934472522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/3p7Qp-hfnbE/menus-e-barras-de-ferramentas-no-pyside_9719.html" title="Menus e barras de ferramentas no PySide ( Parte 3 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_9719.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FR307fCp7ImA9WhdVGEk.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-6116088497471038299</id><published>2011-09-23T23:13:00.000-07:00</published><updated>2011-09-23T23:13:36.304-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T23:13:36.304-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Menus e barras de ferramentas no PySide ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Menubar&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;A barra de menu é uma parte comum de uma aplicação GUI. É um grupo de comandos localizados em vários menus. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#! / Usr / bin / python&lt;/span&gt;
 &lt;span style="color: #008800; font-style: italic;"&gt;# -*- Coding: utf-8 -*-&lt;/span&gt;

 &lt;span style="color: blue;"&gt;""&lt;/span&gt; &lt;span style="color: blue;"&gt;"&lt;/span&gt;
 ZetCode PySide tutorial 

 Este programa cria um menu.

 autor: Jan Bodnar
 Web site: zetcode.com 
 Ultima edição: agosto &lt;span style="color: blue;"&gt;2011&lt;/span&gt;
 &lt;span style="color: blue;"&gt;""&lt;/span&gt; &lt;span style="color: blue;"&gt;"&lt;/span&gt;

 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
 from PySide import QtGui

 Exemplo de classe (QtGui.QMainWindow):
    
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__ (self):
         super (auto Exemplo). __init__ ()
        
         self.initUI ()
        
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI (self):               
        
         exitAction = QtGui.QAction (QtGui.QIcon (&lt;span style="color: blue;"&gt;'exit.png'&lt;/span&gt;), &lt;span style="color: blue;"&gt;'&amp;amp; Exit ", self)&lt;/span&gt;
         exitAction.setShortcut (&lt;span style="color: blue;"&gt;'Ctrl + Q'&lt;/span&gt;)
         exitAction.setStatusTip (&lt;span style="color: blue;"&gt;'Exit pedido »)&lt;/span&gt;
         exitAction.triggered.connect (self.close)

         self.statusBar ()

         menubar = self.menuBar ()
         fileMenu menubar.addMenu = (&lt;span style="color: blue;"&gt;'&amp;amp; File'&lt;/span&gt;)
         fileMenu.addAction (exitAction)
        
         self.setGeometry (&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
         self.setWindowTitle (&lt;span style="color: blue;"&gt;'Menu'&lt;/span&gt;)    
         self.show ()
        
        
 &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main ():
    
     app QtGui.QApplication = (sys.argv)
     Exemplo ex = ()
     sys.exit (app.exec_ ())


 &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
     main ()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No exemplo acima, criamos um menubar com um menu. Este menu vai conter uma ação que irá encerrar o aplicativo se selecionado. A barra de status é criada também. A ação será acessível com o atalho Ctrl + Q.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;exitAction = QtGui.QAction (QtGui.QIcon (&lt;span style="color: blue;"&gt;'exit.png'&lt;/span&gt;), &lt;span style="color: blue;"&gt;'&amp;amp; Exit ", self)&lt;/span&gt;
exitAction.setShortcut (&lt;span style="color: blue;"&gt;'Ctrl + Q'&lt;/span&gt;)
exitAction.setStatusTip (&lt;span style="color: blue;"&gt;'Exit pedido »)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O PySide QtGui.QAction é uma abstração para as ações realizadas com uma barra de ferramentas menubar, ou com uma tecla atalho personalizada. Na primeira linha, criamos uma ação, com um ícone específico e um Label 'Exit'.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt; Além disso, um atalho é definido para esta ação. A terceira linha cria um status tip, que é mostrado na barra de status, quando houver o ponteiro do mouse sobre o item de menu. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;exitAction.triggered.connect (self.close)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Quando selecionar esta ação em particular, um sinal será acionado. O sinal é conectado ao método close() do QtGui.QMainWindow widget. Isso encerra a aplicação. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;menubar = self.menuBar ()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Uma barra de menu é criada. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;fileMenu menubar.addMenu = (&lt;span style="color: blue;"&gt;'&amp;amp; File'&lt;/span&gt;)
 fileMenu.addAction (exitAction)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos menu &amp;amp;File com o método addMenu() do objeto menubar. Nós adicionamos a ação criada anteriormente para o File. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-6116088497471038299?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g-m16OLw6hIRuVTj1PdVIeN-LUY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g-m16OLw6hIRuVTj1PdVIeN-LUY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g-m16OLw6hIRuVTj1PdVIeN-LUY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g-m16OLw6hIRuVTj1PdVIeN-LUY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/sy24zFkBtHE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/6116088497471038299/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_23.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6116088497471038299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/6116088497471038299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/sy24zFkBtHE/menus-e-barras-de-ferramentas-no-pyside_23.html" title="Menus e barras de ferramentas no PySide ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8DQ306eyp7ImA9WhdVGEk.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-8912854789820400561</id><published>2011-09-23T23:02:00.000-07:00</published><updated>2011-09-23T23:14:32.313-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T23:14:32.313-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>Menus e barras de ferramentas no PySide ( Parte 1 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Nesta parte do tutorial sobre o PySide, vamos criar menus e barras de ferramentas. Um menu é um grupo de comandos localizados em um menubar. A barra de ferramentas tem botões com os comandos comuns na aplicação.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;MainWindow - Janela Principal&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O QtGui.QMainWindow é uma classe fornece uma janela principal do aplicativo. Isto permite que possamos criar o esqueleto da aplicação clássica com uma barra de status da barra de ferramentas e uma barra de menu.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;Statusbar&lt;/b&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;A barra de status é um widget que é usado para exibir informações de status. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#! / Usr / bin / python&lt;/span&gt;
 &lt;span style="color: #008800; font-style: italic;"&gt;# -*- Coding: utf-8 -*-&lt;/span&gt;

 &lt;span style="color: blue;"&gt;""&lt;/span&gt; &lt;span style="color: blue;"&gt;"&lt;/span&gt;
 ZetCode PySide tutorial 

 Este programa cria uma barra de status.

 autor: Jan Bodnar
 Web site: zetcode.com 
 Ultima edição: agosto &lt;span style="color: blue;"&gt;2011&lt;/span&gt;
 &lt;span style="color: blue;"&gt;""&lt;/span&gt; &lt;span style="color: blue;"&gt;"&lt;/span&gt;

 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
 from PySide import QtGui

 Exemplo de classe (QtGui.QMainWindow):
    
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__ (self):
         super (auto Exemplo). __init__ ()
        
         self.initUI ()
        
     &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI (self):               
        
         self.statusBar (). ShowMessage (&lt;span style="color: blue;"&gt;'Ready'&lt;/span&gt;)
        
         self.setGeometry (&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
         self.setWindowTitle (&lt;span style="color: blue;"&gt;'Statusbar'&lt;/span&gt;)    
         self.show ()
        
        
 &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main ():
    
     app QtGui.QApplication = (sys.argv)
     Exemplo ex = ()
     sys.exit (app.exec_ ())


 &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
     main ()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;A barra de status é criado com a ajuda do QtGui.QMainWindow widget. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.statusBar (). ShowMessage (&lt;span style="color: blue;"&gt;'Ready'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Para obter a barra de status, chamamos o método statusBar() do da classe QtGui.QMainWindow. A primeira chamada do método cria uma barra de status. Chamadas subseqüentes retornam o objeto do status. O showMessage() exibe uma mensagem na statusbar. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-8912854789820400561?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4MJ0Xa1mGUmzwTcxLasGIAxQ0EY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4MJ0Xa1mGUmzwTcxLasGIAxQ0EY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4MJ0Xa1mGUmzwTcxLasGIAxQ0EY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4MJ0Xa1mGUmzwTcxLasGIAxQ0EY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/J1M6hQyz6Jc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/8912854789820400561/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/8912854789820400561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/8912854789820400561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/J1M6hQyz6Jc/menus-e-barras-de-ferramentas-no-pyside.html" title="Menus e barras de ferramentas no PySide ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/menus-e-barras-de-ferramentas-no-pyside.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQFQHk_eyp7ImA9WhdVE0U.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-1239399412360162967</id><published>2011-09-18T15:51:00.000-07:00</published><updated>2011-09-18T15:51:51.743-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T15:51:51.743-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 6 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;O script a seguir mostra, como podemos por no centro do desktop uma janela.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This program centers a window &lt;/span&gt;
&lt;span style="color: blue;"&gt;on the screen. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):               
        
        self.resize(&lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.center()
        
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Center'&lt;/span&gt;)    
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; center(self):
        
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
        
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Centralizar uma janela na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.center()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O código que irá centrar a janela é colocado com o método center().&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;qr = self.frameGeometry()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Obtemos um retângulo especificando a geometria da janela principal. Isto inclui qualquer moldura da janela.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;cp = QtGui.QDesktopWidget().availableGeometry().center()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós descobrimos a resolução da tela do nosso monitor. E da presente resolução, obtemos o ponto central.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;qr.moveCenter(cp)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Agora vamos definir o centro do retângulo ao centro da tela. Tamanho do retângulo é alterado.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.move(qr.topLeft())
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Movemos o ponto superior esquerdo da janela do aplicativo para o ponto superior esquerdo do retângulo qr, assim, centralizamos a janela na nossa tela.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-1239399412360162967?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/esQNYC_adjJVBjIPL-4gIR4iWQI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/esQNYC_adjJVBjIPL-4gIR4iWQI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/esQNYC_adjJVBjIPL-4gIR4iWQI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/esQNYC_adjJVBjIPL-4gIR4iWQI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/l2xJuTjhH4g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/1239399412360162967/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-6.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1239399412360162967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1239399412360162967?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/l2xJuTjhH4g/pyside-exemplo-simples-parte-6.html" title="PySide - Exemplo Simples ( Parte 6 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-6.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcHSHs5fCp7ImA9WhdVE0U.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-2804038819719659422</id><published>2011-09-18T14:57:00.000-07:00</published><updated>2011-09-18T14:57:19.524-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T14:57:19.524-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 5 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Por padrão, se clicar sobre o botão x na barra de título, o QtGui.QWidget será fechado. Às vezes queremos modificar esse comportamento padrão. Por exemplo, se temos um arquivo aberto em um editor para o qual precisaremos&amp;nbsp; fazer algumas mudanças. É sensato ter um sistema para mostrar uma caixa de mensagem para confirmar a ação.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This program shows a confirmation &lt;/span&gt;
&lt;span style="color: blue;"&gt;message box when we click on the close&lt;/span&gt;
&lt;span style="color: blue;"&gt;button of the application window. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):               
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)        
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Message box'&lt;/span&gt;)    
        self.show()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; closeEvent(self, event):
        
        reply = QtGui.QMessageBox.question(self, &lt;span style="color: blue;"&gt;'Message'&lt;/span&gt;,
            &lt;span style="color: blue;"&gt;"Are you sure to quit?"&lt;/span&gt;, QtGui.QMessageBox.Yes | 
            QtGui.QMessageBox.No, QtGui.QMessageBox.No)

        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; reply == QtGui.QMessageBox.Yes:
            event.accept()
        &lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;:
            event.ignore()        
        
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Se fechar o QtGui.QWidget, o QCloseEvent é gerado. Para modificar o comportamento widget precisamos reimplementar o manipulador de eventos closeEvent().&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;reply = QtGui.QMessageBox.question(self, &lt;span style="color: blue;"&gt;'Message'&lt;/span&gt;,
    &lt;span style="color: blue;"&gt;"Are you sure to quit?"&lt;/span&gt;, QtGui.QMessageBox.Yes | 
    QtGui.QMessageBox.No, QtGui.QMessageBox.No)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Vamos mostrar uma caixa de mensagem com dois botões. Sim e Não. A primeira seqüência aparece na barra de título. A segunda string é o texto da mensagem exibida pelo diálogo. O terceiro argumento especifica a combinação de botões que aparecem na caixa de diálogo. O último parâmetro é o botão padrão. É o botão, que, inicialmente, o foco do teclado. O valor de retorno é armazenado na variável de resposta.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; reply == QtGui.QMessageBox.Yes:
    event.accept()
&lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;:
    event.ignore() 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui nós testamos o valor de retorno. Se clicarmos no botão Sim, aceitamos o evento que leva ao encerramento do widget e para o término da aplicação. Caso contrário, ignorar o evento close.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/messagebox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/messagebox.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-2804038819719659422?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LaqykuG5zs7W9kXHWKMo_yv_IuU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LaqykuG5zs7W9kXHWKMo_yv_IuU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LaqykuG5zs7W9kXHWKMo_yv_IuU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LaqykuG5zs7W9kXHWKMo_yv_IuU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/8sIrFx8eZfU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/2804038819719659422/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-5.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2804038819719659422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/2804038819719659422?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/8sIrFx8eZfU/pyside-exemplo-simples-parte-5.html" title="PySide - Exemplo Simples ( Parte 5 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YBQHc6eCp7ImA9WhdVE0U.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-3931381213361712351</id><published>2011-09-18T14:25:00.000-07:00</published><updated>2011-09-18T14:25:51.910-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T14:25:51.910-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 4 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;A maneira óbvia como fechar uma janela é clicar sobre a marca x na barra de título. No próximo exemplo, vamos mostrar, como podemos fechar nossos programas de forma diferente. Faremos um breve resumo sobre slots e sinais.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O seguinte é o construtor de um QtGui.QPushButton, que vamos usar em nosso exemplo.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; PySide.QtGui.QPushButton(text[, parent=None])
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O parâmetro de texto é um texto que será exibido no botão. O pai é o widget, no qual colocamos a nossa botão. No nosso caso será um QtGui.QWidget.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This program creates a quit&lt;/span&gt;
&lt;span style="color: blue;"&gt;button. When we press the button,&lt;/span&gt;
&lt;span style="color: blue;"&gt;the application terminates. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):               
        
        qbtn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Quit'&lt;/span&gt;, self)
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(&lt;span style="color: blue;"&gt;50&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)       
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Quit button'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Neste exemplo, criamos um botão de quit. Ao clicar na janela, o aplicativo é encerrado.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;qbtn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Quit'&lt;/span&gt;, self)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um botão. O botão é uma instância da classe QtGui.QPushButton. O primeiro parâmetro do construtor é o rótulo do botão. O segundo parâmetro é o widget pai. O widget é o widget pai do Exemple, que é um QtGui.QWidget por herança.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O sistema de processamento de eventos em PySide é construído com o sinal e mecanismo de slot. Se clicarmos no botão, um sinal é emitido por ter clicado. O slot pode ser um slot Qt ou qualquer. O QtCore.QCoreApplication contém o ciclo de eventos principais. Ele processa e despacha todos os eventos. O método instance() nos dá a instância atual.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Note-se que QtCore.QCoreApplication é criado com o QtGui.QApplication. O sinal clicado está ligado ao método quit(), que encerra o aplicativo. A comunicação é feita entre dois objetos. O emissor e o receptor. O remetente é o botão, o receptor é o objeto de aplicativo.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/quitbutton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/quitbutton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-3931381213361712351?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/npjPJ-UoJnkLMQTdCbZonJHha6o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/npjPJ-UoJnkLMQTdCbZonJHha6o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/npjPJ-UoJnkLMQTdCbZonJHha6o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/npjPJ-UoJnkLMQTdCbZonJHha6o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/lfXdFMWpbrA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/3931381213361712351/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-4.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/3931381213361712351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/3931381213361712351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/lfXdFMWpbrA/pyside-exemplo-simples-parte-4.html" title="PySide - Exemplo Simples ( Parte 4 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EEQHo-fyp7ImA9WhdVE0o.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-4479609349872605073</id><published>2011-09-18T14:00:00.000-07:00</published><updated>2011-09-18T14:00:01.457-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T14:00:01.457-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 3 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós podemos fornecer um balão de ajuda para qualquer um dos nossos widgets.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This example shows a tooltip on &lt;/span&gt;
&lt;span style="color: blue;"&gt;a window and a button&lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        QtGui.QToolTip.setFont(QtGui.QFont(&lt;span style="color: blue;"&gt;'SansSerif'&lt;/span&gt;, &lt;span style="color: blue;"&gt;10&lt;/span&gt;))
        
        self.setToolTip(&lt;span style="color: blue;"&gt;'This is a &amp;lt;b&amp;gt;QWidget&amp;lt;/b&amp;gt; widget'&lt;/span&gt;)
        
        btn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Button'&lt;/span&gt;, self)
        btn.setToolTip(&lt;span style="color: blue;"&gt;'This is a &amp;lt;b&amp;gt;QPushButton&amp;lt;/b&amp;gt; widget'&lt;/span&gt;)
        btn.resize(btn.sizeHint())
        btn.move(&lt;span style="color: blue;"&gt;50&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)       
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Tooltips'&lt;/span&gt;)    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Neste exemplo, vamos mostrar uma dica para um dois widgets PySide.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;QtGui.QToolTip.setFont(QtGui.QFont(&lt;span style="color: blue;"&gt;'SansSerif'&lt;/span&gt;, &lt;span style="color: blue;"&gt;10&lt;/span&gt;))
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Esse método estático define uma fonte usada para processar as dicas. Usamos uma fonte SansSerif 10px.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.setToolTip(&lt;span style="color: blue;"&gt;'This is a &amp;lt;b&amp;gt;QWidget&amp;lt;/b&amp;gt; widget'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Para criar um tooltip, chamamos o método setTooltip(). Podemos usar também, a formatação rich text.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;btn = QtGui.QPushButton(&lt;span style="color: blue;"&gt;'Button'&lt;/span&gt;, self)
btn.setToolTip(&lt;span style="color: blue;"&gt;'This is a &amp;lt;b&amp;gt;QPushButton&amp;lt;/b&amp;gt; widget'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um widget botão e definimos suas propriedades.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;btn.resize(btn.sizeHint())
btn.move(&lt;span style="color: blue;"&gt;50&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)       
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O botão está sendo redimensionado e movido sobre a janela. O método sizeHint() dá o tamanho recomendado para o botão.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/tooltips.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/tooltips.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-4479609349872605073?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RtyrxenTBwhbzBKPdGyqJnLvF_A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RtyrxenTBwhbzBKPdGyqJnLvF_A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RtyrxenTBwhbzBKPdGyqJnLvF_A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RtyrxenTBwhbzBKPdGyqJnLvF_A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/7Z6BCNSbVSA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/4479609349872605073/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-3.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/4479609349872605073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/4479609349872605073?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/7Z6BCNSbVSA/pyside-exemplo-simples-parte-3.html" title="PySide - Exemplo Simples ( Parte 3 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGRHwzfip7ImA9WhdVFUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-5611562720400686944</id><published>2011-09-18T13:38:00.000-07:00</published><updated>2011-09-20T14:38:45.286-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-20T14:38:45.286-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;O ícone é uma pequena imagem, que normalmente é exibido no canto superior esquerdo da barra de título. É também visível na barra de tarefas. No exemplo a seguir vamos mostrar, como o fazemos em PySide. Vamos também apresentar alguns novos métodos.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PySide tutorial &lt;/span&gt;

&lt;span style="color: blue;"&gt;This example shows an icon&lt;/span&gt;
&lt;span style="color: blue;"&gt;in the titlebar of the window.&lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com &lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: August 2011&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):
        
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Icon'&lt;/span&gt;)
        self.setWindowIcon(QtGui.QIcon(&lt;span style="color: blue;"&gt;'web.png'&lt;/span&gt;))        
    
        self.show()
        
&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O exemplo anterior foi codificado em um estilo processual. Linguagem de programação Python suporta tanto processuais e estilos de programação orientada a objeto. Programação em PySide significa programação em OOP.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
    
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;As três coisas mais importantes da programação orientada a objetos são classes, dados e métodos. Aqui nós criamos uma nova classe chamada Exemple. Exemple é uma classe que herda a classe QtGui.QWidget. Isto significa que devemos chamar dois construtores. O primeiro para a classe Exemple e o segundo para a classe herdada no caso, o &lt;b&gt;QtGui.QWidget&lt;/b&gt;. O segundo é chamado com o método super().&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
self.setWindowTitle(&lt;span style="color: blue;"&gt;'Icon'&lt;/span&gt;)
self.setWindowIcon(QtGui.QIcon(&lt;span style="color: blue;"&gt;'web.png'&lt;/span&gt;)) 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Todos os três métodos foram herdados da classe QtGui.QWidget. O setGeometry() faz duas coisas. Ele localiza a posição da janela na tela e define o tamanho da janela. Os dois primeiros parâmetros são as posições x e y da janela. A terceira é a largura e o quarto é a altura da janela.&lt;br /&gt;
&lt;br /&gt;
O último método define o ícone do aplicativo. Para fazer isso, criamos um objeto QtGui.QIcon. O QtGui.QIcon recebe o caminho para o nosso ícone será exibido.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Vamos colocar o código de inicialização dentro do método main(). Este é um código de linguagem Python.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/icon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/icon.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-5611562720400686944?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wRBQK6EHwTqEu80cWnRY6RXNtQk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wRBQK6EHwTqEu80cWnRY6RXNtQk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wRBQK6EHwTqEu80cWnRY6RXNtQk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wRBQK6EHwTqEu80cWnRY6RXNtQk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/kuZNmR54yQw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/5611562720400686944/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-2.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5611562720400686944?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5611562720400686944?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/kuZNmR54yQw/pyside-exemplo-simples-parte-2.html" title="PySide - Exemplo Simples ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDSX0-fip7ImA9WhdVE0o.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-1548195634167862624</id><published>2011-09-18T13:17:00.000-07:00</published><updated>2011-09-18T13:21:18.356-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T13:21:18.356-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Exemplo Simples ( Parte 1 )</title><content type="html">&lt;span id="goog_1756850680"&gt;&lt;/span&gt;&lt;span id="goog_1756850681"&gt;&lt;/span&gt; &lt;span style="font-family: Verdana,sans-serif;"&gt;PySide é um kit de ferramentas de alto nível. Se quisermos código em um kit de ferramentas de nível inferior, o seguinte exemplo de código poderia facilmente ter dezenas de linhas mas evitamos isso importando módulos do PySide:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: #008800; font-style: italic;"&gt;# simple.py&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

app = QtGui.QApplication(sys.argv)

wid = QtGui.QWidget()
wid.resize(&lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
wid.setWindowTitle(&lt;span style="color: blue;"&gt;'Simple'&lt;/span&gt;)
wid.show()

sys.exit(app.exec_())
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O código acima mostra uma pequena janela na tela.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PySide &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui nós fornecemos as importações necessárias. Os widgets básicos GUI estão localizadas no módulo QtGui.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;app = QtGui.QApplication(sys.argv)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O objeto de aplicativo está localizado no módulo QtGui. O parâmetro sys.argv é uma lista de argumentos da linha de comando. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;wid = QtGui.QWidget()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O Widget de QWidget é a classe base de todos os objetos de interface do usuário PySide. Nós fornecemos o construtor padrão para QWidget. O construtor padrão não tem pai. &lt;b&gt;Um widget com nenhum pai é chamado de janela.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;wid.resize(&lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O resize () método redimensiona o widget. É de largura e 150px 250px.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;wid.setWindowTitle(&lt;span style="color: blue;"&gt;'Simple'&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui vamos definir o título para a nossa janela. O título é mostrado na barra de título.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;wid.show()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O método show () exibe o widget na tela.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;sys.exit(app.exec_())
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Finalmente, entramos no mainloop da aplicação. A manipulação de eventos começa a partir deste ponto. O mainloop recebe eventos do sistema de janelas e despacha-los para o mini-aplicações. O mainloop termina, se nós chamamos o método exit(). O sys.exit() método que garante uma saída limpa. O ambiente será informado, como o aplicativo terminou.&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Você quer saber porque o método exec_() tem um sublinhado? Tudo tem um significado. Isto se deve ao fato de que exec é uma palavra reservada do python. E assim, exec_() foi utilizado.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/img/gui/pyside/simple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/img/gui/pyside/simple.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-1548195634167862624?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DfUgT4n4bJZdit6Iuos9NNTqFYE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DfUgT4n4bJZdit6Iuos9NNTqFYE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DfUgT4n4bJZdit6Iuos9NNTqFYE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DfUgT4n4bJZdit6Iuos9NNTqFYE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/qJDfCq5Jx5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/1548195634167862624/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-1.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1548195634167862624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/1548195634167862624?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/qJDfCq5Jx5k/pyside-exemplo-simples-parte-1.html" title="PySide - Exemplo Simples ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-exemplo-simples-parte-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcMQ30zeCp7ImA9WhdVE0o.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-5262866788519420379</id><published>2011-09-18T12:56:00.000-07:00</published><updated>2011-09-18T13:01:22.380-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T13:01:22.380-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PySide" /><title>PySide - Introdução</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;PySide é uma biblioteca Python multi-plataforma para criar interfaces gráficas. É uma ligação Python ao framework Qt. A biblioteca é uma das bibliotecas mais poderosas GUI&lt;b&gt; ( Guide User Interface )&lt;/b&gt;. O site oficial do projeto PySide é &lt;a href="http://pyside.org/"&gt;pyside.org&lt;/a&gt;. E é desenvolvido pela Nokia.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;PySide é implementado como um conjunto de módulos Python. Atualmente ele tem 15 módulos. Estes módulos fornecem ferramentas poderosas para trabalhar com GUI, multimídia, documentos XML, de rede ou bancos de dados. Em nosso tutorial, vamos trabalhar com dois desses módulos. O &lt;b&gt;QtGui&lt;/b&gt; e os módulos &lt;b&gt;QtCore&lt;/b&gt;.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;O módulo QtCore contém a funcionalidade não-gui core. Este módulo é utilizado para trabalhar com o tempo, arquivos e diretórios, vários tipos de dados, fluxos, urls, fios ou processos. O módulo QtGui contém os componentes gráficos e classes relacionadas. Estas incluem, por exemplo botões, janelas, barras de status, barras de ferramentas, sliders, bitmaps, cores, fontes, etc...&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;PySide foi desenvolvido pela Nokia uma vez que o dono do toolkit Qt &lt;b&gt;(PyQt)&lt;/b&gt;, não conseguiram chegar a um acordo com a Computing Riverbank para incluir a &lt;b&gt;LGPL como licença alternativa&lt;/b&gt;. PySide tem uma alta compatibilidade com a API do PyQt4, de modo a migração para o PySide não é difícil. Além do mais, sua documentação é mais elaborada e de fácil entendimento.&lt;br /&gt;
&lt;br /&gt;
Você pode acessar sua documentação no site: &lt;a href="http://www.pyside.org/docs/pyside/contents.html"&gt;http://www.pyside.org/docs/pyside/contents.html&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;No Linux para instalar, basta digitar no Terminal:

Sudo apt-add-repositório ppa: pyside
Sudo apt-get update
Sudo apt-get install python-pyside
&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-5262866788519420379?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yrrGBhcXhqidmCwPw3K2wo7Clw8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yrrGBhcXhqidmCwPw3K2wo7Clw8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yrrGBhcXhqidmCwPw3K2wo7Clw8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yrrGBhcXhqidmCwPw3K2wo7Clw8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/1Wi1pyYDwmM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/5262866788519420379/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyside-introducao.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5262866788519420379?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5262866788519420379?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/1Wi1pyYDwmM/pyside-introducao.html" title="PySide - Introdução" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyside-introducao.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIGQ3o-fSp7ImA9WhdVEUg.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-5679883322728094983</id><published>2011-09-15T23:56:00.000-07:00</published><updated>2011-09-16T00:02:02.455-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-16T00:02:02.455-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PyQt4" /><title>PyQt4 - Drag and Drop  ( Parte 2 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;No exemplo a seguir, vamos demonstrar, como arrastar e soltar um widget botão.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PyQt4 tutorial&lt;/span&gt;

&lt;span style="color: blue;"&gt;In this program, we can press&lt;/span&gt;
&lt;span style="color: blue;"&gt;on a button with a left mouse&lt;/span&gt;
&lt;span style="color: blue;"&gt;click or drag and drop the button &lt;/span&gt;
&lt;span style="color: blue;"&gt;with  the right mouse click. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com&lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: December 2010&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PyQt4 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PyQt4 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtCore


&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Button(QtGui.QPushButton):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self, title, parent):
        super(Button, self).__init__(title, parent)

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; mouseMoveEvent(self, e):

        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.buttons() != QtCore.Qt.RightButton:
            &lt;span style="color: navy; font-weight: bold;"&gt;return&lt;/span&gt;

        mimeData = QtCore.QMimeData()

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(e.pos() - self.rect().topLeft())

        dropAction = drag.start(QtCore.Qt.MoveAction)


    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; mousePressEvent(self, e):
      
        QtGui.QPushButton.mousePressEvent(self, e)
        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.button() == QtCore.Qt.LeftButton:
            &lt;span style="color: navy; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span style="color: blue;"&gt;'press'&lt;/span&gt;


&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()

        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):

        self.setAcceptDrops(True)

        self.button = Button(&lt;span style="color: blue;"&gt;'Button'&lt;/span&gt;, self)
        self.button.move(&lt;span style="color: blue;"&gt;100&lt;/span&gt;, &lt;span style="color: blue;"&gt;65&lt;/span&gt;)

        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Click or Move'&lt;/span&gt;)
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;280&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dragEnterEvent(self, e):
      
        e.accept()

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dropEvent(self, e):

        position = e.pos()
        self.button.move(position)

        e.setDropAction(QtCore.Qt.MoveAction)
        e.accept()

&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
  
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    app.exec_()  


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No nosso exemplo de código, temos um QPushButton na janela. Se clicarmos no botão com um botão esquerdo do mouse, imprimirá 'pressione' o console. Com o botão direito mover o botão, nós realizaremos assim uma operação de arrastar e soltar sobre o widget botão.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Button(QtGui.QPushButton):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self, title, parent):
        super(Button, self).__init__(title, parent)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Criamos uma classe Button, que deriva do QPushButton. Nós vamos entao reimplementar também dois métodos do QPushButton. mouseMoveEvent() e mousePressEvent(). O mouseMoveEvent() é o lugar, onde a operação de arrastar e soltar começa.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; event.buttons() != QtCore.Qt.RightButton:
    &lt;span style="color: navy; font-weight: bold;"&gt;return&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui decidimos, que podemos realizar drag &amp;amp; drop apenas com um botão direito do mouse. O botão esquerdo do mouse é reservado para clicar no botão.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;mimeData = QtCore.QMimeData()

drag = QtGui.QDrag(self)
drag.setMimeData(mimeData)
drag.setHotSpot(event.pos() - self.rect().topLeft())
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Aqui criamos um objeto QDrag.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;dropAction = drag.start(QtCore.Qt.MoveAction)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O método start() do objeto arrastar começa a arrastar e soltar.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; mousePressEvent(self, e):
  
    QtGui.QPushButton.mousePressEvent(self, e)
    &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.button() == QtCore.Qt.LeftButton:
        &lt;span style="color: navy; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span style="color: blue;"&gt;'press'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Repare que nós chamamos de método mousePressEvent() sobre o pai também. Caso contrário, não veríamos o botão sendo pressionado.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;position = e.pos()

self.button.move(position)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O método dropEvent() é o que acontece depois que soltar o botão do mouse e concluir a operação de drop. Nós descobrimos então a posição atual do ponteiro do mouse. &lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;e.setDropAction(QtCore.Qt.MoveAction)
e.accept()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós especificamos o tipo da ação de soltar. No nosso caso, é uma ação de movimento.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-5679883322728094983?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DK85NByT8j77XM88LGNR-DAavPY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK85NByT8j77XM88LGNR-DAavPY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DK85NByT8j77XM88LGNR-DAavPY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK85NByT8j77XM88LGNR-DAavPY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/VI2QFkBWJTk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/5679883322728094983/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyqt4-drag-and-drop-parte-2.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5679883322728094983?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/5679883322728094983?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/VI2QFkBWJTk/pyqt4-drag-and-drop-parte-2.html" title="PyQt4 - Drag and Drop  ( Parte 2 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyqt4-drag-and-drop-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YBR3s9eyp7ImA9WhdVEUk.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-473768409051186510</id><published>2011-09-15T20:04:00.000-07:00</published><updated>2011-09-15T21:59:16.563-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T21:59:16.563-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PyQt4" /><title>PyQt4 - Drag and Drop  ( Parte 1 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;Nesta parte do tutorial PyQt4, vamos falar sobre as operações de drag &amp;amp; drop.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Em interfaces de computador gráfica do usuário, drag-and-drop é a ação (ou suporte para a ação de) clicando em um objeto virtual e arrastando-o para um local diferente ou em outro objeto virtual. Em geral, ele pode ser usado para invocar diversos tipos de ações, ou criar vários tipos de associações entre dois objetos abstratos. (Wikipedia)&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Arrastar e soltar funcionalidade é um dos aspectos mais visíveis da interface gráfica do usuário. Operação arrastar e soltar permite aos usuários fazer coisas complexas de forma intuitiva.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Normalmente, podemos arrastar e soltar duas coisas. Dados ou alguns objetos gráficos. Se arrastar uma imagem de uma aplicação para outra, arraste e solte dados binários. Se arrastar uma aba no Firefox e movê-lo para outro lugar, temos de arrastar e soltar um componente gráfica.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Simples arrastar e soltar&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;No primeiro exemplo, teremos uma QLineEdit e um QPushButton. Vamos arrastar texto normal a partir da linha de edição widget e solte-o widget botão.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: blue;"&gt;"""&lt;/span&gt;
&lt;span style="color: blue;"&gt;ZetCode PyQt4 tutorial&lt;/span&gt;

&lt;span style="color: blue;"&gt;This is a simple drag and&lt;/span&gt;
&lt;span style="color: blue;"&gt;drop example. &lt;/span&gt;

&lt;span style="color: blue;"&gt;author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: blue;"&gt;website: zetcode.com&lt;/span&gt;
&lt;span style="color: blue;"&gt;last edited: December 2010&lt;/span&gt;
&lt;span style="color: blue;"&gt;"""&lt;/span&gt;

&lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; sys
&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PyQt4 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui

&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Button(QtGui.QPushButton):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self, title, parent):
        super(Button, self).__init__(title, parent)
        
        self.setAcceptDrops(True)

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dragEnterEvent(self, e):
      
        &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.mimeData().hasFormat(&lt;span style="color: blue;"&gt;'text/plain'&lt;/span&gt;):
            e.accept()
        &lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;:
            e.ignore() 

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dropEvent(self, e):
        self.setText(e.mimeData().text()) 


&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):

        edit = QtGui.QLineEdit(&lt;span style="color: blue;"&gt;''&lt;/span&gt;, self)
        edit.setDragEnabled(True)
        edit.move(&lt;span style="color: blue;"&gt;30&lt;/span&gt;, &lt;span style="color: blue;"&gt;65&lt;/span&gt;)

        button = Button(&lt;span style="color: blue;"&gt;"Button"&lt;/span&gt;, self)
        button.move(&lt;span style="color: blue;"&gt;190&lt;/span&gt;, &lt;span style="color: blue;"&gt;65&lt;/span&gt;)
        
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'Simple Drag &amp;amp; Drop'&lt;/span&gt;)
        self.setGeometry(&lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;300&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)


&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
  
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    ex.show()
    app.exec_()  
  

&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()  
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Simples arrastar e soltar.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Button(QtGui.QPushButton):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self, title, parent):
        super(Button, self).__init__(title, parent)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;A fim de soltar o texto no widget QPushButton, devemos reimplementar alguns métodos. Então, criamos a nossa própria classe Button, que vai herdar da classe QPushButton.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;self.setAcceptDrops(True)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós permitimos evento drop para o widget.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dragEnterEvent(self, e):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; e.mimeData().hasFormat(&lt;span style="color: blue;"&gt;'text/plain'&lt;/span&gt;):
        e.accept()
    &lt;span style="color: navy; font-weight: bold;"&gt;else&lt;/span&gt;:
        e.ignore() 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Primeiro vamos reimplementar o método dragEnterEvent(). Informamos sobre o tipo de dados, vamos aceitar. No nosso caso, é texto puro.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; dropEvent(self, e):
    self.setText(e.mimeData().text()) 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Ao reimplementar o método dropEvent(), vamos definir o que vamos fazer sobre o evento drop. Aqui nós mudar o texto do widget botão.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;edit = QtGui.QLineEdit(&lt;span style="color: blue;"&gt;''&lt;/span&gt;, self)
edit.setDragEnabled(True)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O Widget QLineEdit tem um suporte embutido para operações de arrastar. Tudo o que precisamos fazer é chamar o método setDragEnabled() para ativá-lo.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/tutorials/pyqt4/images/simpledd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://zetcode.com/tutorials/pyqt4/images/simpledd.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-473768409051186510?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WwaR7c2mRbxzL1Ao7CPiMXZsxDs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwaR7c2mRbxzL1Ao7CPiMXZsxDs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WwaR7c2mRbxzL1Ao7CPiMXZsxDs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwaR7c2mRbxzL1Ao7CPiMXZsxDs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/62BPIKfWbiw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/473768409051186510/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyqt4-drag-and-drop-parte-1.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/473768409051186510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/473768409051186510?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/62BPIKfWbiw/pyqt4-drag-and-drop-parte-1.html" title="PyQt4 - Drag and Drop  ( Parte 1 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyqt4-drag-and-drop-parte-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEABQns5cSp7ImA9WhdVEU4.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-8800179264886711149</id><published>2011-09-15T18:32:00.000-07:00</published><updated>2011-09-15T18:32:33.529-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T18:32:33.529-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PyQt4" /><title>PyQt4 - Widgets  ( Parte 9 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;O QComboBox é um widget que permite ao usuário escolher entre uma lista de opções.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: #008800; font-style: italic;"&gt;# ZetCode PyQt4 tutorial&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# In this example, we show how to &lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# use the QComboBox widget.&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# &lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# website: zetcode.com&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# last edited: December 2010&lt;/span&gt;


&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PyQt4 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore


&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()

        self.initUI()


    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):

        self.label = QtGui.QLabel(&lt;span style="color: blue;"&gt;"Ubuntu"&lt;/span&gt;, self)

        combo = QtGui.QComboBox(self)
        combo.addItem(&lt;span style="color: blue;"&gt;"Ubuntu"&lt;/span&gt;)
        combo.addItem(&lt;span style="color: blue;"&gt;"Mandriva"&lt;/span&gt;)
        combo.addItem(&lt;span style="color: blue;"&gt;"Fedora"&lt;/span&gt;)
        combo.addItem(&lt;span style="color: blue;"&gt;"Red Hat"&lt;/span&gt;)
        combo.addItem(&lt;span style="color: blue;"&gt;"Gentoo"&lt;/span&gt;)

        combo.move(&lt;span style="color: blue;"&gt;50&lt;/span&gt;, &lt;span style="color: blue;"&gt;50&lt;/span&gt;)
        self.label.move(&lt;span style="color: blue;"&gt;50&lt;/span&gt;, &lt;span style="color: blue;"&gt;150&lt;/span&gt;)

        self.connect(combo, QtCore.SIGNAL(&lt;span style="color: blue;"&gt;'activated(QString)'&lt;/span&gt;), 
            self.onActivated)

        self.setGeometry(&lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;200&lt;/span&gt;, &lt;span style="color: blue;"&gt;350&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;)
        self.setWindowTitle(&lt;span style="color: blue;"&gt;'QComboBox'&lt;/span&gt;)

    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; onActivated(self, text):
      
        self.label.setText(text)
        self.label.adjustSize()


&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():
  
    app = QtGui.QApplication([])
    ex = Example()
    ex.show()
    app.exec_()    


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;O exemplo mostra um QComboBox e um QLabel. A caixa de combinação tem uma lista de seis opções. Estes são os nomes das distros Linux. O Widget de etiqueta mostra a opção selecionada na caixa de combinação.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;combo = QtGui.QComboBox(self)
combo.addItem(&lt;span style="color: blue;"&gt;"Ubuntu"&lt;/span&gt;)
combo.addItem(&lt;span style="color: blue;"&gt;"Mandriva"&lt;/span&gt;)
combo.addItem(&lt;span style="color: blue;"&gt;"Fedora"&lt;/span&gt;)
combo.addItem(&lt;span style="color: blue;"&gt;"Red Hat"&lt;/span&gt;)
combo.addItem(&lt;span style="color: blue;"&gt;"Gentoo"&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um widget QComboBox e adicionar cinco opções para ele.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;self.connect(combo, QtCore.SIGNAL(&lt;span style="color: blue;"&gt;'activated(QString)'&lt;/span&gt;), 
    self.onActivated)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Após uma seleção de itens, chamamos o método onActivated().&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; onActivated(self, text):

    self.label.setText(text)
    self.label.adjustSize()
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Dentro do método, vamos definir o texto do item escolhido para o widget do rótulo. Nós ajustar o tamanho da etiqueta.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/tutorials/pyqt4/images/qcombobox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://zetcode.com/tutorials/pyqt4/images/qcombobox.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-8800179264886711149?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5DDqeIWpgN-aTugVB5BUxs8TGmI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5DDqeIWpgN-aTugVB5BUxs8TGmI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5DDqeIWpgN-aTugVB5BUxs8TGmI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5DDqeIWpgN-aTugVB5BUxs8TGmI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/8eueKvY9vp8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/8800179264886711149/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyqt4-widgets-parte-9.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/8800179264886711149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/8800179264886711149?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/8eueKvY9vp8/pyqt4-widgets-parte-9.html" title="PyQt4 - Widgets  ( Parte 9 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyqt4-widgets-parte-9.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQCQ3s5cCp7ImA9WhdVEU4.&quot;"><id>tag:blogger.com,1999:blog-7204639661080906502.post-7617481436759780270</id><published>2011-09-15T18:26:00.000-07:00</published><updated>2011-09-15T18:26:02.528-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T18:26:02.528-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PyQt4" /><title>PyQt4 - Widgets  ( Parte 8 )</title><content type="html">&lt;div style="font-family: Verdana,sans-serif;"&gt;QSplitter permite ao usuário controlar o tamanho dos widgets filhos, arrastando o limite da hierarquia entre seus filhos. No nosso exemplo, vamos mostrar três widgets QFrame organizados com dois divisores.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;&lt;span style="color: #008800; font-style: italic;"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style="color: #008800; font-style: italic;"&gt;# ZetCode PyQt4 tutorial&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;#&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# This example shows&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# how to use QSplitter widget.&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# &lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# author: Jan Bodnar&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# website: zetcode.com&lt;/span&gt;
&lt;span style="color: #008800; font-style: italic;"&gt;# last edited: December 2010&lt;/span&gt;


&lt;span style="color: navy; font-weight: bold;"&gt;from&lt;/span&gt; PyQt4 &lt;span style="color: navy; font-weight: bold;"&gt;import&lt;/span&gt; QtGui, QtCore


&lt;span style="color: navy; font-weight: bold;"&gt;class&lt;/span&gt; Example(QtGui.QWidget):
  
    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; __init__(self):
        super(Example, self).__init__()

        self.initUI()


    &lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; initUI(self):

        hbox = QtGui.QHBoxLayout(self)

        topleft = QtGui.QFrame(self)
        topleft.setFrameShape(QtGui.QFrame.StyledPanel)
 
        topright = QtGui.QFrame(self)
        topright.setFrameShape(QtGui.QFrame.StyledPanel)

        bottom = QtGui.QFrame(self)
        bottom.setFrameShape(QtGui.QFrame.StyledPanel)

        splitter1 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)

        splitter2 = QtGui.QSplitter(QtCore.Qt.Vertical)
        splitter2.addWidget(splitter1)
        splitter2.addWidget(bottom)

        hbox.addWidget(splitter2)
        self.setLayout(hbox)

        self.setWindowTitle(&lt;span style="color: blue;"&gt;'QSplitter'&lt;/span&gt;)
        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(&lt;span style="color: blue;"&gt;'Cleanlooks'&lt;/span&gt;))
        self.setGeometry(&lt;span style="color: blue;"&gt;250&lt;/span&gt;, &lt;span style="color: blue;"&gt;200&lt;/span&gt;, &lt;span style="color: blue;"&gt;350&lt;/span&gt;, &lt;span style="color: blue;"&gt;250&lt;/span&gt;)
        

&lt;span style="color: navy; font-weight: bold;"&gt;def&lt;/span&gt; main():

    app = QtGui.QApplication([])
    ex = Example()
    ex.show()
    app.exec_()


&lt;span style="color: navy; font-weight: bold;"&gt;if&lt;/span&gt; __name__ == &lt;span style="color: blue;"&gt;'__main__'&lt;/span&gt;:
    main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;No nosso exemplo temos três widgets frame e dois splitters.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;topleft = QtGui.QFrame(self)
topleft.setFrameShape(QtGui.QFrame.StyledPanel)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Usamos uma moldura estilo, a fim de ver os limites entre os widgets QFrame.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;splitter1 = QtGui.QSplitter(QtCore.Qt.Horizontal)
splitter1.addWidget(topleft)
splitter1.addWidget(topright)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós criamos um widget QSplitter e adicionar dois frames dentro dela.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;splitter2 = QtGui.QSplitter(QtCore.Qt.Vertical)
splitter2.addWidget(splitter1)
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Podemos também adicionar divisor para outro widget splitter.&lt;/div&gt;&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; border-color: gray; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: black; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;&lt;pre style="line-height: 125%; margin: 0pt;"&gt;QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(&lt;span style="color: blue;"&gt;'Cleanlooks'&lt;/span&gt;))
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana,sans-serif;"&gt;Nós usamos um estilo Cleanlooks. Em alguns estilos os frames não são visíveis.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://zetcode.com/tutorials/pyqt4/images/qsplitter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://zetcode.com/tutorials/pyqt4/images/qsplitter.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7204639661080906502-7617481436759780270?l=pyscript.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8GCYPn_mfafASUxRHddJpr1Qb9c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8GCYPn_mfafASUxRHddJpr1Qb9c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8GCYPn_mfafASUxRHddJpr1Qb9c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8GCYPn_mfafASUxRHddJpr1Qb9c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Pythonando/~4/tOSDZgOJh20" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pyscript.blogspot.com/feeds/7617481436759780270/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://pyscript.blogspot.com/2011/09/pyqt4-widgets-parte-8.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/7617481436759780270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7204639661080906502/posts/default/7617481436759780270?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Pythonando/~3/tOSDZgOJh20/pyqt4-widgets-parte-8.html" title="PyQt4 - Widgets  ( Parte 8 )" /><author><name>Vitor Lobo</name><uri>http://www.blogger.com/profile/13804502380509104009</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_rbGQxrNPyYA/TH1A-HeJemI/AAAAAAAAAFE/WrkGZKOq5QM/S220/vitur.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://pyscript.blogspot.com/2011/09/pyqt4-widgets-parte-8.html</feedburner:origLink></entry></feed>

