PyQt4入门教程(2)_PyQt4的第一个程序

来源:互联网 发布:淘宝如何推广引流 编辑:程序博客网 时间:2024/06/06 02:45
<div id="article_details" class="details">
    <div class="article_title">   
         <span class="ico ico_type_Translated"></span>


    <h1>
        <span class="link_title"><a href="/bigbennyguo/article/details/50676803">
        PyQt4入门教程(2)_PyQt4的第一个程序        
           
        </a>
        </span>
    </h1>
</div>
        <div class="article_manage clearfix">
        <div class="article_l">
            <span class="link_categories">
            标签:
              <a href="http://www.csdn.net/tag/PyQt4" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">PyQt4</a><a href="http://www.csdn.net/tag/PyQt" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">PyQt</a><a href="http://www.csdn.net/tag/%e6%95%99%e7%a8%8b" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">教程</a><a href="http://www.csdn.net/tag/Python" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">Python</a><a href="http://www.csdn.net/tag/%e5%85%a5%e9%97%a8" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">入门</a>
            </span>
        </div>
        <div class="article_r">
            <span class="link_postdate">2016-02-16 20:54</span>
            <span class="link_view" title="阅读次数">7563人阅读</span>
            <span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(2)</span>
            <span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('PyQt4%e5%85%a5%e9%97%a8%e6%95%99%e7%a8%8b(2)_PyQt4%e7%9a%84%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8f','50676803');return false;" title="收藏" target="_blank">收藏</a></span>
             <span class="link_report"> <a href="#report" onclick="javascript:report(50676803,2);return false;" title="举报">举报</a></span>


        </div>
    </div>    <style type="text/css">        
            .embody{
                padding:10px 10px 10px;
                margin:0 -20px;
                border-bottom:solid 1px #ededed;                
            }
            .embody_b{
                margin:0 ;
                padding:10px 0;
            }
            .embody .embody_t,.embody .embody_c{
                display: inline-block;
                margin-right:10px;
            }
            .embody_t{
                font-size: 12px;
                color:#999;
            }
            .embody_c{
                font-size: 12px;
            }
            .embody_c img,.embody_c em{
                display: inline-block;
                vertical-align: middle;               
            }
             .embody_c img{               
                width:30px;
                height:30px;
            }
            .embody_c em{
                margin: 0 20px 0 10px;
                color:#333;
                font-style: normal;
            }
    </style>
    <script type="text/javascript">
        $(function () {
            try
            {
                var lib = eval("("+$("#lib").attr("value")+")");
                var html = "";
                if (lib.err == 0) {
                    $.each(lib.data, function (i) {
                        var obj = lib.data[i];
                        //html += '<img src="' + obj.logo + '"/>' + obj.name + "&nbsp;&nbsp;";
                        html += ' <a href="' + obj.url + '" target="_blank">';
                        html += ' <img src="' + obj.logo + '">';
                        html += ' <em><b>' + obj.name + '</b></em>';
                        html += ' </a>';
                    });
                    if (html != "") {
                        setTimeout(function () {
                            $("#lib").html(html);                      
                            $("#embody").show();
                        }, 100);
                    }
                }      
            } catch (err)
            { }
            
        });
    </script>
      <div class="category clearfix">
        <div class="category_l">
           <img src="http://static.blog.csdn.net/images/category_icon.jpg">
            <span>分类:</span>
        </div>
        <div class="category_r">
                    <label onclick="GetCategoryArticles('6128223','bigbennyguo','top','50676803');">
                        <span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">PyQt4教程<em>(6)</em></span>
                      <img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">
                      <img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">
                        <div class="subItem">
                            <div class="subItem_t"><a href="http://blog.csdn.net/bigbennyguo/article/category/6128223" target="_blank">作者同类文章</a><i class="J_close">X</i></div>
                            <ul class="subItem_l" id="top_6128223">                            
                            </ul>
                        </div>
                    </label>                    
        </div>
    </div>


  


  
  
     




<div style="clear:both"></div><div style="border:solid 1px #ccc; background:#eee; float:left; min-width:200px;padding:4px 10px;"><p style="text-align:right;margin:0;"><span style="float:left;">目录<a href="#" title="系统根据文章中H1到H6标签自动生成文章目录">(?)</a></span><a href="#" onclick="javascript:return openct(this);" title="展开">[+]</a></p><ol style="display:none;margin-left:14px;padding-left:14px;line-height:160%;"><li><a href="#t0">这一部分我们将学习PyQt中一些基本的函数</a></li><li><a href="#t1">一个简单的例子</a></li><li><a href="#t2">应用的图标</a></li><li><a href="#t3">显示提示栏</a></li><li><a href="#t4">关闭窗口</a></li><li><a href="#t5">消息框Message Box</a></li><li><a href="#t6">使窗口显示在屏幕中间</a></li><ol><li><a href="#t7">好了这就是本节全部的内容了我们已经掌握了一些基本的方法</a></li></ol></ol></div><div style="clear:both"></div><div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post">
        <div class="markdown_views"><p><code>注:文中译者的话将用方括号【】标出。</code></p>






<h3 id="这一部分我们将学习pyqt中一些基本的函数"><a name="t0" target="_blank"></a><strong>这一部分我们将学习PyQt中一些基本的函数。</strong></h3>






<h1 id="一个简单的例子"><a name="t1" target="_blank"></a><strong>一个简单的例子</strong></h1>


<p>这是一个能够显示出一个窗口的简单例子。目前为止我们已经可以对这个窗口干很多事情了,比如说改变它的尺寸,最大化,最小化……干这些事情本来需要写很多代码,但是PyQt已经帮我们写好啦【开心】,由于干这些事情的代码在绝大多数应用中都会重复使用,所以没有必要一遍一遍地写这些代码。 <br>
我们可以感受到PyQt4是一个很高级的工具库,如果我们用一些比较低级的工具库的话,完成下面这些代码干的事情可能需要敲几百行代码!</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
In this example, we create a simple
window in PyQt4.
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui




<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)


    w = QtGui.QWidget()
    w.resize(<span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
    w.move(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>)
    w.setWindowTitle(<span class="hljs-string">'Simple'</span>)
    w.show()
    sys.exit(app.exec_())
<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul></pre>


<p>上面这些代码可以在屏幕中显示出一个小窗口,大家试一试。接下来我们一句一句地讲解这些代码。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li></ul></pre>


<p>这里我们导入了一些必要的组件,其中基本的GUI部件是包含在QtGui模块中的。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">app = QtGui.QApplication(sys.argv)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>每一个PyQt4应用都必须创建一个应用(application)对象,这个应用对象位于QtGui模块中。其中的sys.argv参数是由命令行参数组成的列表(list)。<a href="http://lib.csdn.net/base/python" class="replace_word" title="Python知识库" target="_blank" style="color:#df3434; font-weight:bold;">Python</a>脚本也可以从shell中运行,这是我们控制脚本启动的一种方式。【这里暂时不理解也没有关系,影响不大,记住要创建application就行】</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">w = QtGui.QWidget()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>QtGui.QWidget是PyQt4所有用户接口对象中的基础类库。我们在这里调用了QtGui.QWidget的默认构造函数,这个构造没有父对象。<strong>我们把没有父对象的部件(widget)叫做窗口(window)</strong>。【这里对于父对象暂时也不需要理解,理解不到也没关系。这句中我们就是创造了一个没有父对象的部件,也就是创建了一个窗口w。】</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">w.resize(<span class="hljs-number">250</span>, <span class="hljs-number">150</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>很好理解,resize()方法可以调整部件的大小,我们把它调整成了250px宽,150px高。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">w.move(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>move()方法将我们的部件移动到了屏幕上坐标为x=300,y=300的地方。【注:屏幕的坐标是以左上角为原点的,横着是x轴,竖着是y轴。】</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">w.setWindowTitle(<span class="hljs-string">'Simple'</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们设定了部件(其实是个窗口)的标题,标题将在标题栏中显示。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">w.show()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>show()方法使我们创建的部件能够在屏幕上显示出来。部件先在内存(memory)中被创建,之后再被显示到屏幕上。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">sys.exit(app.exec_())</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>在显示了窗口之后,我们进入了程序的主循环,并且开始处理时间。主循环从窗口接收事件并对部件进行处理。如果我们调用exit()函数或者关闭最主要的部件,主循环将终止。这里的sys.exit()调用保证程序完全退出。 <br>
值得一提的是exec_()中有一个下划线,为什么呢?因为exec是一个<a href="http://lib.csdn.net/base/python" class="replace_word" title="Python知识库" target="_blank" style="color:#df3434; font-weight:bold;">python</a>关键字,因此加了下划线。 <br>
最后,我们运行程序,就会得到下面这个简单的窗口。 <br>
<img src="http://img.blog.csdn.net/20160216211914423" alt="Simple" title=""></p>






<h1 id="应用的图标"><a name="t2" target="_blank"></a><strong>应用的图标</strong></h1>


<p>应用图标是那个在应用窗口左上角显示的那个东西。下面这个例子展示了如何在PyQt4中定制应用图标。我们还会介绍一些新的函数。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
This example shows an icon
in the titlebar of the window.
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui




<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()


        self.initUI()




    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">initUI</span><span class="hljs-params">(self)</span>:</span>


        self.setGeometry(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
        self.setWindowTitle(<span class="hljs-string">'Icon'</span>)
        self.setWindowIcon(QtGui.QIcon(<span class="hljs-string">'web.png'</span>))        


        self.show()




<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()    </code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li></ul></pre>


<p>是不是感觉画风突变?那是因为我们在第一个例子中使用的是过程式编程风格。Python语言同时支持过程式编程和面向对象编程风格,上面这个例子就是用面向对象的编程风格编写的。而你需要知道,用PyQt4编程就以为着面向对象编程(OOP)【为什么要用面向对象的编程风格?务必百度一下。】</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()
        ...</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul></pre>


<p>在面向对象的编程中最重要的三个东西是类(classes),数据(data)和方法(methods)。这里我们创建了一个新的类叫做Example,括号中的QtGui.QWidget表明这个Example类是从QtGui.QWidget类继承来的。这意味着我们为新类写构造函数时需要调用被继承类的构造函数。super(Example, self)返回了Example的父对象(即QtGui.QWidget),接着我们调用了父对象的构造函数。注意<code>__init__</code>是Python中的构造函数。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">self.initUI()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们调用了一个我们自己写的initUI()函数来创建GUI。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">self.setGeometry(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
self.setWindowTitle(<span class="hljs-string">'Icon'</span>)
self.setWindowIcon(QtGui.QIcon(<span class="hljs-string">'web.png'</span>))</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul></pre>


<p>由于我们是继承 QtGui.QWidget类,我们的新类其实就是一个部件(widget),有widget的所有方法,这三个方法就都出自widget。 <br>
我们先来介绍一下setGeometry这个方法,它做了两件事情:将部件定位并设定了它的大小【其实就是resize和move的混合函数】。前两个参数是部件相对于父元素的x,y坐标【这里其实是个窗口(window),没有父元素记得吗?所以是屏幕上的x,y坐标。】,后两个参数是部件的宽和高。 <br>
接下来说一下setWindowIcon这个方法,它设定了应用的图标。为了做到这一点,我们创建了一个QtGui.QIon对象,创建时的参数就是我们想要的图标的路径。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul></pre>


<p>启动代码放在了main函数中,我们先创建一个应用(application),然后创建我们定义的新类Example的一个实例ex。 <br>
【注意<code>if __name__ == '__main__'</code>这个Python中惯用的定义入口点的方式。】 <br>
最后的效果就是这个样子,图标变啦: <br>
<img src="http://img.blog.csdn.net/20160216214804975" alt="Icon" title=""></p>






<h1 id="显示提示栏"><a name="t3" target="_blank"></a><strong>显示提示栏</strong></h1>


<p>我们可以让鼠标移到部件上时显示提示信息。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
This example shows a tooltip on 
a window and a button
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui




<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()


        self.initUI()


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">initUI</span><span class="hljs-params">(self)</span>:</span>


        QtGui.QToolTip.setFont(QtGui.QFont(<span class="hljs-string">'SansSerif'</span>, <span class="hljs-number">10</span>))


        self.setToolTip(<span class="hljs-string">'This is a &lt;b&gt;QWidget&lt;/b&gt; widget'</span>)


        btn = QtGui.QPushButton(<span class="hljs-string">'Button'</span>, self)
        btn.setToolTip(<span class="hljs-string">'This is a &lt;b&gt;QPushButton&lt;/b&gt; widget'</span>)
        btn.resize(btn.sizeHint())
        btn.move(<span class="hljs-number">50</span>, <span class="hljs-number">50</span>)       


        self.setGeometry(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
        self.setWindowTitle(<span class="hljs-string">'Tooltips'</span>)    
        self.show()


<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li></ul></pre>


<p>在这个例子中,我们使两个部件可以显示提示信息。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">QtGui.QToolTip.setFont(QtGui.QFont(<span class="hljs-string">'SansSerif'</span>, <span class="hljs-number">10</span>))</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这个方法设置了一个用来显示提示信息的字体,我们使用大小10px的SansSerif字体。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">self.setToolTip(<span class="hljs-string">'This is a &lt;b&gt;QWidget&lt;/b&gt; widget'</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>为了创建一个提示框,我们调用setTooltip()这个方法,我们还可以使用html标签【厉害吧】。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">btn = QtGui.QPushButton(<span class="hljs-string">'Button'</span>, self)
btn.setToolTip(<span class="hljs-string">'This is a &lt;b&gt;QPushButton&lt;/b&gt; widget'</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li></ul></pre>


<p>这里我们创建了一个按钮,并给它加上了提示框(Tooltip)。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">btn.resize(btn.sizeHint())
btn.move(<span class="hljs-number">50</span>, <span class="hljs-number">50</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li></ul></pre>


<p>我们设定了按钮的大小,位置。其中sizeHint()方法返回了一个推荐的大小。 <br>
最后运行出来是这个样子的: <br>
<img src="http://img.blog.csdn.net/20160217184619054" alt="ToolTip" title=""></p>






<h1 id="关闭窗口"><a name="t4" target="_blank"></a><strong>关闭窗口</strong></h1>


<p>最显然的一种关闭窗口的办法当然是点击窗口右上角的那个叉叉。在下一个例子中,我们将会展示怎样程序性地关闭窗口,比如设置一个有关闭窗口作用的按钮。我们还会简单地接触到信号(与)槽系统(signals and slots)。 <br>
我们在例子中要使用的QtGui.QPushButton的构造函数原型是这样的:</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">QPushButton(string text, QWidget parent = <span class="hljs-keyword">None</span>)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>其中text参数是按钮上显示的文字。parent参数是部件的父对象,在这里就是我们要把按钮放在什么上,本例中是一个QtGui.QWidget【其实是一个窗口(window)】。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
This program creates a quit
button. When we press the button,
the application terminates. 
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui, QtCore




<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()


        self.initUI()


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">initUI</span><span class="hljs-params">(self)</span>:</span>               


        qbtn = QtGui.QPushButton(<span class="hljs-string">'Quit'</span>, self)
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(<span class="hljs-number">50</span>, <span class="hljs-number">50</span>)       


        self.setGeometry(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
        self.setWindowTitle(<span class="hljs-string">'Quit button'</span>)    
        self.show()


<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li></ul></pre>


<p>在本例中,我们创造了一个有退出作用的quit按钮,只要鼠标点击这个按钮,应用就终止运行了。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui, QtCore</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们需要QtCore中的一个对象,所以需要额外引入这个模块。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">qbtn = QtGui.QPushButton(<span class="hljs-string">'Quit'</span>, self)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们创造了一个按钮(push button),它是QtGui.QPushButton类的一个实例。第一个参数是按钮上的文字,第二个参数是父对象,这里就是我们创建的Example了,也就是self,它继承自QtGui.QWidget类【Example没有父对象,是一个窗口(window),记得吗】。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p><strong>PyQt4中的事件处理系统是由信号槽机制(signals and slots)实现的。</strong>如果我们点击了这个按钮,就会发出“clicked”这个信号。QtCore.QCoreApplication这个东西包含了程序的主循环,它处理和分派所有的事件,而instance()方法返回的是目前的实例(insatnce)。注意到QtCore.QCoreApplication随着QtGui.QApplication的创建而创建,而由于我们这里用connect()函数将“clicked”事件和可以终止应用的quit()函数联系(connect)在了一起,所以点击按钮,应用终止。这种交流在两个对象之间完成:发送者和接受者,其中发送者是按钮,接受者是应用本身。【这里只要大家对connect方法有个感性的认识就可以了】 <br>
运行出来就是这个样子: <br>
<img src="http://img.blog.csdn.net/20160217190741484" alt="quitbutton" title=""></p>






<h1 id="消息框message-box"><a name="t5" target="_blank"></a><strong>消息框(Message Box)</strong></h1>


<p>默认情况下,如果我们点击了程序右上角的叉叉, <br>
QtGui.QWidget部件就会被关闭。但有时我们想要改变这种默认的行为,比如说,如果我们在编辑一些东西,关闭窗口时我们想要弹出一个消息框来确认是否退出。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
This program shows a confirmation 
message box when we click on the close
button of the application window. 
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui




<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()


        self.initUI()




    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">initUI</span><span class="hljs-params">(self)</span>:</span>               


        self.setGeometry(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">250</span>, <span class="hljs-number">150</span>)        
        self.setWindowTitle(<span class="hljs-string">'Message box'</span>)    
        self.show()




    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">closeEvent</span><span class="hljs-params">(self, event)</span>:</span>


        reply = QtGui.QMessageBox.question(self, <span class="hljs-string">'Message'</span>,
            <span class="hljs-string">"Are you sure to quit?"</span>, QtGui.QMessageBox.Yes | 
            QtGui.QMessageBox.No, QtGui.QMessageBox.No)


        <span class="hljs-keyword">if</span> reply == QtGui.QMessageBox.Yes:
            event.accept()
        <span class="hljs-keyword">else</span>:
            event.ignore()        




<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li></ul></pre>


<p>根据类定义,如果关闭QtGui.QWidget,QtGui.QCloseEvent将会执行。所以为了达到我们的目的,我们需要重新定制closeEvent()这个事件句柄(event handler)如下。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">reply = QtGui.QMessageBox.question(self, <span class="hljs-string">'Message'</span>,
    <span class="hljs-string">"Are you sure to quit?"</span>, QtGui.QMessageBox.Yes | 
    QtGui.QMessageBox.No, QtGui.QMessageBox.No)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul></pre>


<p>这里我们设定显示一个有两个选项(yes &amp; no)的消息框(message box)。QtGui.QMessageBox.question()方法的第二个参数是出现在标题栏的标题,第三个参数是消息框显示的对话内容,第四个参数是出现在消息框的按钮的组合【用或( | )连接】,最后一个参数是默认按钮,即消息框刚跳出来的时候按enter键就可以执行的按钮。这里我们将函数的返回值存储在了reply这个变量中。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-keyword">if</span> reply == QtGui.QMessageBox.Yes:
    event.accept()
<span class="hljs-keyword">else</span>:
    event.ignore()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul></pre>


<p>这里我们<a href="http://lib.csdn.net/base/softwaretest" class="replace_word" title="软件测试知识库" target="_blank" style="color:#df3434; font-weight:bold;">测试</a>函数的返回值。如果我们点击了Yes按钮,close这个事件将会被接受(accept),部件关闭、应用结束;否则close这个事件将会被忽视(ignore),程序继续执行。 <br>
运行出来是这个样子: <br>
<img src="http://img.blog.csdn.net/20160217192149116" alt="messagebox" title=""></p>






<h1 id="使窗口显示在屏幕中间"><a name="t6" target="_blank"></a><strong>使窗口显示在屏幕中间</strong></h1>


<p>下面这个脚本实现了让窗口在屏幕的中央显示。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering"><span class="hljs-comment"># -*- coding: utf-8 -*-</span>


<span class="hljs-string">"""
This program centers a window 
on the screen. 
"""</span>


<span class="hljs-keyword">import</span> sys
<span class="hljs-keyword">from</span> PyQt4 <span class="hljs-keyword">import</span> QtGui




<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Example</span><span class="hljs-params">(QtGui.QWidget)</span>:</span>


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self)</span>:</span>
        super(Example, self).__init__()


        self.initUI()


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">initUI</span><span class="hljs-params">(self)</span>:</span>               


        self.resize(<span class="hljs-number">250</span>, <span class="hljs-number">150</span>)
        self.center()


        self.setWindowTitle(<span class="hljs-string">'Center'</span>)    
        self.show()


    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">center</span><span class="hljs-params">(self)</span>:</span>


        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())




<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>


    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())




<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    main()     </code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li></ul></pre>


<p>其中QtGui.QDesktopWidget这个类提供了用户桌面的信息,包括屏幕大小。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">self.center()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>我们调用一个自己写的center()方法来实现窗口在屏幕中央显示。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">qr = self.frameGeometry()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们用frameGeometry方法得到了主窗口的矩形框架qr。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">cp = QtGui.QDesktopWidget().availableGeometry().center()</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>我们调用这些方法来得到屏幕分辨率,并最终得到屏幕中间点的坐标cp。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">qr.moveCenter(cp)</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>这里我们将矩形框架移至屏幕正中央,大小不变。</p>






<pre class="prettyprint" name="code"><code class="language-python hljs  has-numbering">self.move(qr.topLeft())</code><ul class="pre-numbering" style="opacity: 0.0864597;"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div><ul class="pre-numbering"><li>1</li></ul></pre>


<p>最后我们将应用窗口移至矩形框架的左上角点,这样应用窗口就位于屏幕的中央了【注意部件的move都是左上角移动到某点】。</p>






<h3 id="好了这就是本节全部的内容了我们已经掌握了一些基本的方法"><a name="t7" target="_blank"></a><strong>好了,这就是本节全部的内容了,我们已经掌握了一些基本的方法!</strong></h3></div>
        <script type="text/javascript">
            $(function () {
                $('pre.prettyprint code').each(function () {
                    var lines = $(this).text().split('\n').length;
                    var $numbering = $('<ul></ul>').addClass('pre-numbering').hide();
                    $(this).addClass('has-numbering').parent().append($numbering);
                    for (i = 1; i <= lines; i++) {
                        $numbering.append($('<li></li>').text(i));
                    };
                    $numbering.fadeIn(1700);
                });
            });
        </script>
   
</div>








<!-- Baidu Button BEGIN -->








<div class="bdsharebuttonbox tracking-ad bdshare-button-style0-16" style="float: right;" data-mod="popu_172" data-bd-bind="1499613867463">
<a href="#" class="bds_more" data-cmd="more" style="background-position:0 0 !important; background-image: url(http://bdimg.share.baidu.com/static/api/img/share/icons_0_16.png?v=d754dcc0.png) !important" target="_blank"></a>
<a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间" style="background-position:0 -52px !important" target="_blank"></a>
<a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博" style="background-position:0 -104px !important" target="_blank"></a>
<a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博" style="background-position:0 -260px !important" target="_blank"></a>
<a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网" style="background-position:0 -208px !important" target="_blank"></a>
<a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信" style="background-position:0 -1612px !important" target="_blank"></a>
</div>
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)];</script>
<!-- Baidu Button END -->


   


<!--172.16.140.14-->


<!-- Baidu Button BEGIN -->
<script type="text/javascript" id="bdshare_js" data="type=tools&amp;uid=1536434" src="http://bdimg.share.baidu.com/static/js/bds_s_v2.js?cdnversion=416560"></script>


<script type="text/javascript">
    document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)
</script>
<!-- Baidu Button END -->






 




        <div id="digg" articleid="50676803">
            <dl id="btnDigg" class="digg digg_disable" onclick="btndigga();">
               
                 <dt>顶</dt>
                <dd>7</dd>
            </dl>
           
              
            <dl id="btnBury" class="digg digg_disable" onclick="btnburya();">
              
                  <dt>踩</dt>
                <dd>0</dd>               
            </dl>
            
        </div>
     <div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank">&nbsp;</a>   </div>
    <div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank">&nbsp;</a></div>
    <script type="text/javascript">
                function btndigga() {
                    $(".tracking-ad[data-mod='popu_222'] a").click();
                }
                function btnburya() {
                    $(".tracking-ad[data-mod='popu_223'] a").click();
                }
            </script>


   <ul class="article_next_prev">
                <li class="prev_article"><span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian']);location.href='http://blog.csdn.net/bigbennyguo/article/details/50675837';">上一篇</span><a href="http://blog.csdn.net/bigbennyguo/article/details/50675837" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_shangyipian'])">PyQt4入门教程(1)_PyQt介绍及准备工作</a></li>
                <li class="next_article"><span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian']);location.href='http://blog.csdn.net/bigbennyguo/article/details/50706496';">下一篇</span><a href="http://blog.csdn.net/bigbennyguo/article/details/50706496" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian'])">PyQt4入门教程(3)_菜单栏和工具条</a></li>
    </ul>


    <div style="clear:both; height:10px;"></div>




            <div class="similar_article">
                    <h4></h4>
                    <div class="similar_c" style="margin:20px 0px 0px 0px">
                        <div class="similar_c_t">
                          &nbsp;&nbsp;相关文章推荐
                        </div>
                   
                        <div class="similar_wrap tracking-ad" data-mod="popu_36">                       
                            <ul class="similar_list fl">    
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/u010800536/article/details/52574007" title="PyQt4的安装" strategy="BlogCommendFromBaidu" target="_blank">PyQt4的安装</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/LaineGates/article/details/8656102" title="pyQt4 安装" strategy="BlogCommendFromBaidu" target="_blank">pyQt4 安装</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/gavinr/article/details/6989998" title="python PyQt4库使用入门" strategy="BlogCommendFromBaidu" target="_blank">python PyQt4库使用入门</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/lusongno1/article/details/50732225" title="python和pyQT的下载和安装" strategy="BlogCommendFromBaidu" target="_blank">python和pyQT的下载和安装</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/bigbennyguo/article/details/50721991" title="PyQt4入门教程(4)_布局管理" strategy="BlogCommendFromBaidu" target="_blank">PyQt4入门教程(4)_布局管理</a>
                                   </li>
                            </ul>
                              <ul class="similar_list fr">      
                                   <li>
                                       <em>•</em>
                                       <a href="http://scm002.iteye.com/blog/1724292" title="PyQt4教程" strategy="BlogCommendFromCsdn" target="_blank">PyQt4教程</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/STN_LCD/article/details/71080475" title="python入门汇总" strategy="BlogCommendFromCsdn" target="_blank">python入门汇总</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://jhs470ai.iteye.com/blog/1357886" title="Python2.6+PyQt4.8+eric4+汉化+开发教程" strategy="BlogCommendFromCsdn" target="_blank">Python2.6+PyQt4.8+eric4+汉化+开发教程</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://blog.csdn.net/ejinxian/article/details/49556085" title="收藏的技术站点" strategy="BlogCommendFromCsdn" target="_blank">收藏的技术站点</a>
                                   </li>
                                   <li>
                                       <em>•</em>
                                       <a href="http://soft-app.iteye.com/blog/925504" title="J2EE入门教程(4)" strategy="BlogCommendFromCsdn" target="_blank">J2EE入门教程(4)</a>
                                   </li>
                            </ul>
                        </div>
                    </div>
                </div>   
      
</div>
原创粉丝点击