<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Townes &#187; Python GUI</title>
	<atom:link href="https://thetownes.coolpage.biz/?feed=rss2&#038;tag=python-gui" rel="self" type="application/rss+xml" />
	<link>https://thetownes.coolpage.biz</link>
	<description>本站已转移至：http://www.thetownes.info</description>
	<lastBuildDate>Thu, 01 Aug 2013 11:49:56 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>我的Python GUI之旅</title>
		<link>https://thetownes.coolpage.biz/?p=102</link>
		<comments>https://thetownes.coolpage.biz/?p=102#comments</comments>
		<pubDate>Tue, 09 Jul 2013 14:20:50 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Python GUI]]></category>
		<category><![CDATA[wxGlade]]></category>

		<guid isPermaLink="false">http://thetownes.coolpage.biz/?p=102</guid>
		<description><![CDATA[最近用python帮朋友写一个读写二进制文件的程序，很快就写好了控制台程序。用过 &#8230; <a href="https://thetownes.coolpage.biz/?p=102">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>最近用<strong>python</strong>帮朋友写一个读写二进制文件的程序，很快就写好了控制台程序。用过之后感觉不方便，因为涉及到数据检索，在控制台下执行这样的操作太痛苦了，于是便有了编写窗口程序的需求。我也因此开始了我的<strong>python</strong>&nbsp;<strong>gui</strong>之旅。</p>
<div>　　因为用<strong>python</strong>的时间不长，对其<strong>gui</strong>编程没有任何了解，说实话一开始就没打算用<strong>python</strong>写窗口程序，我觉得这不是<strong>python</strong>的强项。但世界是在变化着的，呵呵，闲话少叙，进入正题。</div>
<div>　　经过一番google，首先进入我视野的是pyqt和wxPython，pyqt是基于目前比较成熟的商业套件Qt的，并且有比较好的开发环境Eric（正是这一点吸引了我）。于是下载qt、pyqt、Eric，好麻烦哦。总算下完了，执行安装吧，蹦出来一提示：“需要安装g++编译器”。太郁闷了，我不就是想开发一个简单的窗口程序嘛，至于这么麻烦嘛，放弃！</div>
<div>　　于是转向wxPython，下载完成后执行安装，很快完成。但是却没有找到启动开发环境的地方，反复琢磨才弄明白，wxPython只是提供<strong>gui</strong>开发的基础库，并没有开发环境。又经过一番搜索找到了几个基于wxPython的工具：boa、wxGlade、wxWidget。</div>
<div>　　首先使用boa，这个工具的界面很像delphi，集成了UI设计和代码编辑，但是好像不太稳定，不定什么时候就Crash了，最要命的还是它的代码Auto-Complete功能使用的快捷键是Ctrl+Space，并且没有地方进行修改。后果可想而知，除非用菜单进行AC，总不至于让我修改使用过了N多年的输入法快捷键吧。放弃！</div>
<div>　　目光转向wxGlade和wxWidgit，这哥俩不亏都是姓“wx”的，都是只能用来设计UI，不具备代码编辑功能，因此不能算是IDE，功能好像也都差不多。先装了个wxGlade，在没有文档没有外援的情况下，使用了一下，就一个体会：“控件简直没法定位，没法用！”。于是又装了个wxWidgit，感觉好像跟wxGlade差不多，试用了一下就Uninstall了。</div>
<div>　　转了一圈也没有找到个称手的工具，我的心那是哇凉哇凉的！但是程序还得写啊，又一番猛search，发现大家对这个wxGlade的评价还挺好，甚至有人推荐使用。看来是我了解不够，于是又硬着头皮把我已经卸载的wxGlade请回来，仔细了解这个工具的功能，并且做了些尝试，发现用起来确实还挺好，控件的定位只要用好sizer控件，还是挺方便的。但有一个问题，中文支持不太好，如果使用过了中文，再次载入设计好的界面文件时会出错，可能是我了解的还不够深入吧。</div>
<div>　　简单介绍一下wxGlade的使用。</div>
<div>　　进入程序后，主界面有三个窗口，如下图所示：</div>
<div><img alt="" src="http://img1.51cto.com/attachment/200801/200801051199517444703.jpg" border="0" /></div>
<div>&nbsp;</div>
<div>　　首先点击控件窗口的第一个图标，添加一个Frame，接着就可以向新建的Frame中添加控件了。控件的布局使用sizer进行控制，也就是控件窗口里最后两个控件（即BoxSizer和GridSizer）。</div>
<div>　　先考虑好界面的布局的大概的样子，让后向Frame里添加sizer，把布局搭建出来，每个sizer里可以包含多个solt，一个solt里只能放一个控件，当然sizer里的solt是可以随时添加和移除的，sizer里也可以包含子seizer。使用过程中多体会试验就好啦。</div>
<div>　　界面搭建好后，设置一下输出路径，使用快捷键Ctrl+G就可以生成py代码了。执行一下，界面是不是出来了呢。<img alt="" src="http://blog.51cto.com/editor/icons/etc_17.gif" width="19" height="19" border="0" /></div>
<div>　　搭建好的界面可以存成文件，以便进行修改时直接就可以调出来之前的设计。不过修改有一点麻烦，因为在界面搭建好后肯定会增加代码，这个时候重新生成的代码，就需要自己手工抠出来新加入的控件的代码，然后填到程序里。这一点也导致wxGlade只能做一些界面比较简单的程序，如果结构很复杂，在写了很多代码后要修改界面，肯定是很痛苦的事情。</div>
<div>　　不过话说回来，我觉得如果要开发商业性的桌面程序，py+wxGlade目前还是不能够胜任的，但如果用来开发一些实用性的小程序，凭着wxGlade的简单和<strong>python</strong>的强大、灵活还是很有杀伤力的。</div>
<div>　　最后秀一下我写地程序的界面，臭美一下。<img alt="" src="http://blog.51cto.com/editor/icons/etc_16.gif" width="19" height="19" border="0" /></div>
<div><img alt="" src="http://img1.51cto.com/attachment/200801/200801051199518892281.jpg" width="650" border="0" /></div>
<p>本文出自 “<a href="http://firefish.blog.51cto.com/">江湖</a>” 博客，因为已经被封了，所以就直接转了~</p>
]]></content:encoded>
			<wfw:commentRss>https://thetownes.coolpage.biz/?feed=rss2&#038;p=102</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
