﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-joinose-随笔分类-Python</title><link>http://www.blogjava.net/joinose/category/9439.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:11:47 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:11:47 GMT</pubDate><ttl>60</ttl><item><title>[MyDemo]鼠标事件演示程序</title><link>http://www.blogjava.net/joinose/archive/2006/06/14/52711.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Wed, 14 Jun 2006 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/06/14/52711.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/52711.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/06/14/52711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/52711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/52711.html</trackback:ping><description><![CDATA[鼠标事件演示程序：<br />鼠标移动即显示鼠标坐标<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11" /><img id="Code_Open_Image" style="display: none;" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11" /><span id="Code_Closed_Text" style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);">JoinoseDemo_EVT_MOTION</span><span id="Code_Open_Text" style="display: none;"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 128);"> 1</span> <span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);">!/usr/bin/python</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 2</span> <span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> -*- coding: UTF-8 -*-</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 3</span> <span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> $Id: JoinoseDemo_EVT_MOTION.py 40 2006-05-18 04:31:45Z Administrator $</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 4</span> <span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> wx<br /></span><span style="color: rgb(0, 128, 128);"> 5</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);"> 6</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> MainApp(wx.App):<br /></span><span style="color: rgb(0, 128, 128);"> 7</span> <span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">def</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 128);">__init__</span><span style="color: rgb(0, 0, 0);">(self):<br /></span><span style="color: rgb(0, 128, 128);"> 8</span> <span style="color: rgb(0, 0, 0);">        wx.App.</span><span style="color: rgb(128, 0, 128);">__init__</span><span style="color: rgb(0, 0, 0);">(self,True,</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(128, 0, 0);">JoinoseDemo_EVT_MOTION.log</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)<br /></span><span style="color: rgb(0, 128, 128);"> 9</span> <span style="color: rgb(0, 0, 0);">        self.Bind(wx.EVT_MOTION, self.OnMouse)<br /></span><span style="color: rgb(0, 128, 128);">10</span> <span style="color: rgb(0, 0, 0);">        <br /></span><span style="color: rgb(0, 128, 128);">11</span> <span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">def</span><span style="color: rgb(0, 0, 0);"> OnMouse(self,event):<br /></span><span style="color: rgb(0, 128, 128);">12</span> <span style="color: rgb(0, 0, 0);">        ms </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> wx.GetMouseState()<br /></span><span style="color: rgb(0, 128, 128);">13</span> <span style="color: rgb(0, 0, 0);">        self.lblX.SetLabel( </span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">X：</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">str(ms.x) )<br /></span><span style="color: rgb(0, 128, 128);">14</span> <span style="color: rgb(0, 0, 0);">        self.lblY.SetLabel( </span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Y：</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">str(ms.y) )<br /></span><span style="color: rgb(0, 128, 128);">15</span> <span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">def</span><span style="color: rgb(0, 0, 0);"> OnInit(self):<br /></span><span style="color: rgb(0, 128, 128);">16</span> <span style="color: rgb(0, 0, 0);">        frame</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">wx.Frame(None,</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">EVT_MOTION事件演示</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br /></span><span style="color: rgb(0, 128, 128);">17</span> <span style="color: rgb(0, 0, 0);">        panel</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">wx.Panel(frame)<br /></span><span style="color: rgb(0, 128, 128);">18</span> <span style="color: rgb(0, 0, 0);">        self.lblX</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">wx.StaticText(panel,label</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">X：</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,pos</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">))<br /></span><span style="color: rgb(0, 128, 128);">19</span> <span style="color: rgb(0, 0, 0);">        self.lblY</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">wx.StaticText(panel,label</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Y：</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,pos</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">200</span><span style="color: rgb(0, 0, 0);">))<br /></span><span style="color: rgb(0, 128, 128);">20</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">21</span> <span style="color: rgb(0, 0, 0);">        frame.Show()<br /></span><span style="color: rgb(0, 128, 128);">22</span> <span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> True<br /></span><span style="color: rgb(0, 128, 128);">23</span> <span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">24</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 128);">__name__</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(128, 0, 0);">__main__</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">:<br /></span><span style="color: rgb(0, 128, 128);">25</span> <span style="color: rgb(0, 0, 0);">    app</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">MainApp()<br /></span><span style="color: rgb(0, 128, 128);">26</span> <span style="color: rgb(0, 0, 0);">    app.MainLoop()</span></span></div><br /><img src ="http://www.blogjava.net/joinose/aggbug/52711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-06-14 13:53 <a href="http://www.blogjava.net/joinose/archive/2006/06/14/52711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[FAQ]如果我想在同一个类中共用一个变量，但不希望子类继承，该怎么办呢？</title><link>http://www.blogjava.net/joinose/archive/2006/06/08/51431.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Thu, 08 Jun 2006 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/06/08/51431.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/51431.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/06/08/51431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/51431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/51431.html</trackback:ping><description><![CDATA[问:如果我想在同一个类中共用一个变量，但不希望子类继承，该怎么办呢？<br />答:那就在类中将这个变量加上global修饰符,<br />示例代码中:<br />1)x可被类parent内部使用,但不能被子类调用<br />2)y的作用域只是在parent.__init__方法内<br />3)z可被类parent内部使用也可被子类调用<br />示例代码如下:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">testGlobal.py</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> -*- coding: utf-8 -*-</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> Filename: testGlobal.py</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> Author  : 水晶鱼</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> Date    : 2006-06-08</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> parent:<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000"> x    </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">这就是只能供类内部使用的变量,子类不能访问</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    x</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">xxxx</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">    </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">注意:赋值与定义要分开写</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self):<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        y</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">yyyy</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.z</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">zzzz</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> test(self):<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">test.x=</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">x<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> child(parent):<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self):<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        parent.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self)<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__name__</span><span style="COLOR: #000000">==</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__main__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">试图访问实例中的x        </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    p</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">parent()<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> p.x<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">except</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">1.不能直接访问实例中的global变量</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">可以供类中其它方法访问:</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">2.通过test方法才可以访问x:</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    p.test()<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">child()<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">试图访问父类中的变量----x,结果是:失败</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> c.x<br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">except</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">3.不能访问父类中的global变量</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">4.但可以通过父类中的test方法得到:</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    c.test()<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">5.可以访问父类中的self变量</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,c.z</span></span></div><br />示例代码输出结果为:<br />C:\Documents and Settings\Administrator\桌面&gt;testGlobal.py<br />1.不能直接访问实例中的global变量<br />2.通过test方法才可以访问x: test.x=xxxx<br />3.不能访问父类中的global变量<br />4.但可以通过父类中的test方法得到: test.x=xxxx<br />5.可以访问父类中的self变量 zzzz<img src ="http://www.blogjava.net/joinose/aggbug/51431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-06-08 18:08 <a href="http://www.blogjava.net/joinose/archive/2006/06/08/51431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[FAQ]怎样探测一个变量是否存在?</title><link>http://www.blogjava.net/joinose/archive/2006/06/06/50907.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Tue, 06 Jun 2006 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/06/06/50907.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/50907.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/06/06/50907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/50907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/50907.html</trackback:ping><description><![CDATA[今天有位网友在QQ群里问我“怎样探测一个变量是否存在？”，这个不难，用locals()方法就可以了，但这个技巧却很实用，所以还是记录一下：<br /><br />  Eyes 19:58:18<br />怎样探测一个变量是否存在 <br />水晶鱼 20:17:03<br />？ <br />  Eyes 20:17:30<br />我想知道一个变量是否存在 <br />水晶鱼 20:17:53<br />有办法的 <br />  Eyes 20:18:02<br />说啊 <br />水晶鱼 20:18:29<br />local字典 <br />水晶鱼 20:18:50<br />locals() <br />  Eyes 20:19:04<br />谢谢  <br />水晶鱼 20:19:51<br /> <br />例子：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">怎样探测一个变量是否存在?</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&gt;&gt;&gt;</span><span style="COLOR: #000000"> a</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">f</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&gt;&gt;&gt;</span><span style="COLOR: #000000"> locals()<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />{</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__builtins__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">: </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">module </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__builtin__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"> (built</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__name__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">: </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__main__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">pywin</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">: </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">module </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">pywin</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">C:\ActivePython24\Lib\site-packages\pythonwin\pywin\__init__.pyc</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__doc__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">: None, </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">a</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">: </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">f</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">}<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&gt;&gt;&gt;</span><span style="COLOR: #000000"> locals().has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">a</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />True<br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&gt;&gt;&gt;</span><span style="COLOR: #000000">  </span></span></div><img src ="http://www.blogjava.net/joinose/aggbug/50907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-06-06 21:09 <a href="http://www.blogjava.net/joinose/archive/2006/06/06/50907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(10)：病历组合查询</title><link>http://www.blogjava.net/joinose/archive/2006/05/27/48486.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Sat, 27 May 2006 07:48:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/05/27/48486.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/48486.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/05/27/48486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/48486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/48486.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>病历组合查询<br />病历组合查询这个模块没有遇到什么大的困难，主要是考虑的是怎么实现组合查询这个功能，这里我是使用动态sql的方式，将查询写成一个视图，然后根据组合查询界面输入的条件，生成sql，然后执行查询，返回结果的显示同“当天登记一览表”模块一样。<br />组合查询业务实现方法代码：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">病历组合查询</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">  1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> listPatientInfo(self,conditions</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">idtype</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">identityid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">patientid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">name</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">sex</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">birthday</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">address</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">age</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080">  9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">registrationid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">diseases</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">description</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">suggestion</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:(),<br /></span><span style="COLOR: #008080"> 14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">operator</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">regtime</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:(),<br /></span><span style="COLOR: #008080"> 16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                         </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">meds</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">}):<br /></span><span style="COLOR: #008080"> 17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 18</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        病历组合查询<br /></span><span style="COLOR: #008080"> 19</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        sql</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 22</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        select distinct p.registrationid,p.patientid,p.idtype,p.identityid,p.patientname,<br /></span><span style="COLOR: #008080"> 23</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                p.birthday,p.sex,p.address,p.description,<br /></span><span style="COLOR: #008080"> 24</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                p.start,p.suggestion,p.operatorname,p.time<br /></span><span style="COLOR: #008080"> 25</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        from v_patientinfo p<br /></span><span style="COLOR: #008080"> 26</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        where 1=1 <br /></span><span style="COLOR: #008080"> 27</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">idtype</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">idtype</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.idtype='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">idtype</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">identityid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 33</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">identityid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.identityid='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">identityid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 36</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">patientid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 37</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">patientid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.patientid='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">patientid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">name</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 41</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">name</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 42</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.patientname='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">name</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 43</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 44</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">sex</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 45</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">sex</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:             <br /></span><span style="COLOR: #008080"> 46</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.sex=%s</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">  conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">sex</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 47</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 48</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">birthday</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 49</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">birthday</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 50</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.birthday='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">birthday</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 51</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 52</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">address</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 53</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">address</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 54</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.address like '%%%s%%'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">address</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 55</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">#TODO:按年龄查询</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 56</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000">#        if conditions.has_key('age'):</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 57</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000">#            if conditions.get('age')&lt;&gt;'':</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 58</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000">#                sql+=" and p.age='"+conditions.get('age')+"'"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 59</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">registrationid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 60</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">registrationid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 61</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.registrationid='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">registrationid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 62</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 63</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">diseases</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 64</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">diseases</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 65</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.diseasetype='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">diseases</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 66</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 67</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">description</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 68</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">description</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 69</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.description like '%%%s%%'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">description</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 70</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 71</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">suggestion</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 72</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">suggestion</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 73</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.suggestion like '%%%s%%'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">suggestion</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 74</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 75</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 76</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #000000">():<br /></span><span style="COLOR: #008080"> 77</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.start between '%s' and '%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> (conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[0],conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])<br /></span><span style="COLOR: #008080"> 78</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 79</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">meds</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 80</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">meds</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 81</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.medname='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">meds</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 82</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 <br /></span><span style="COLOR: #008080"> 83</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">operator</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 84</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">operator</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080"> 85</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.operatorname='%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">operator</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 86</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 87</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.has_key(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">regtime</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080"> 88</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">regtime</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&gt;</span><span style="COLOR: #000000">():<br /></span><span style="COLOR: #008080"> 89</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and p.time between '%s' and '%s'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> (conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">regtime</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[0],conditions.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">regtime</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])<br /></span><span style="COLOR: #008080"> 90</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 91</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        sql</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> order by p.registrationid,p.patientid</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">                <br /></span><span style="COLOR: #008080"> 92</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        result</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.execute(sql)<br /></span><span style="COLOR: #008080"> 93</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 94</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        colname</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">挂号</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人编号</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">证件类型</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">证件号码</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">姓名</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 95</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">出生日期</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">性别</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">居住地址</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病症描述</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,<br /></span><span style="COLOR: #008080"> 96</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                 </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">生病时间</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">医生建议</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">操作员</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">登记时间</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 97</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        total</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">记录数：</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,str(len(result))</span><span style="COLOR: #000000">+</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">条</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">''</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 98</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        result.insert(0,colname)<br /></span><span style="COLOR: #008080"> 99</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        result.append(total)<br /></span><span style="COLOR: #008080">100</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> result</span></span></div>以下是组合查询模块截图：<br /><img style="WIDTH: 514px; HEIGHT: 512px" height="706" alt="ZHCX_1.JPG" src="http://www.blogjava.net/images/blogjava_net/joinose/ZHCX_1.JPG" width="734" border="0" /><img style="WIDTH: 519px; HEIGHT: 461px" height="684" alt="ZHCX_2.JPG" src="http://www.blogjava.net/images/blogjava_net/joinose/ZHCX_2.JPG" width="841" border="0" /><img style="WIDTH: 517px; HEIGHT: 642px" height="690" alt="ZHCX_3.JPG" src="http://www.blogjava.net/images/blogjava_net/joinose/ZHCX_3.JPG" width="685" border="0" /><br />至此，病历管理模块基本功能完成<br /><font color="#0000ff">【下期提示】</font><font color="#000000">完成字典维护</font><img src ="http://www.blogjava.net/joinose/aggbug/48486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-05-27 15:48 <a href="http://www.blogjava.net/joinose/archive/2006/05/27/48486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(09)：当天登记信息一览表</title><link>http://www.blogjava.net/joinose/archive/2006/05/18/46914.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Thu, 18 May 2006 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/05/18/46914.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/46914.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/05/18/46914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/46914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/46914.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>完成当天登记信息一览 <br />在做【当天登记信息一览】这个模块时，结合平时的测试经验，设计表现形式，决定用wx.Notebook来做数据显示，第一页显示列表，第二页显示列表中选中记录的详细信息。<br />列表页使用wx.ListCtrl来显示数据，这里为求快速简单，就写了一个DataListCtrl类简单地继承了wx.ListCtrl这个类，主要扩充了数据填充方法，能将一个字典数据填入列表。主要的代码片断：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">  1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> PatientManageTodayListPanel(wx.Notebook):<br /></span><span style="COLOR: #008080">  2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">  3</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    当天登记一览<br /></span><span style="COLOR: #008080">  4</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">  5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent):<br /></span><span style="COLOR: #008080">  6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        wx.Notebook.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent, wx.ID_ANY,style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.NB_NOPAGETHEME</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">wx.NB_BOTTOM)<br /></span><span style="COLOR: #008080">  7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.listPanel</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">PatientManageListPanel(self)<br /></span><span style="COLOR: #008080">  8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.detailPanel</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">PatientManageDetailPanel(self)<br /></span><span style="COLOR: #008080">  9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.AddPage(self.listPanel, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">当天登记信息列表</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,select</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">True)<br /></span><span style="COLOR: #008080"> 10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.AddPage(self.detailPanel, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">当天登记信息详细信息</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,select</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">False)<br /></span><span style="COLOR: #008080"> 11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.currentItem</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0<br /></span><span style="COLOR: #008080"> 12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.listPanel.list.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)<br /></span><span style="COLOR: #008080"> 14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.listPanel.list.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)<br /></span><span style="COLOR: #008080"> 15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnItemSelected(self, event):<br /></span><span style="COLOR: #008080"> 17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.currentItem </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> event.m_itemIndex<br /></span><span style="COLOR: #008080"> 18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnDoubleClick(self, event):<br /></span><span style="COLOR: #008080"> 20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.detailPanel.ShowPatientInfo(self.listPanel.list.GetItemText(self.currentItem))<br /></span><span style="COLOR: #008080"> 21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.SetSelection(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> PatientManageListPanel(wx.Panel,PatientManageBase):<br /></span><span style="COLOR: #008080"> 24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 25</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    当天登记一览列表<br /></span><span style="COLOR: #008080"> 26</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent):<br /></span><span style="COLOR: #008080"> 28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        wx.Panel.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent, wx.ID_ANY, style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.WANTS_CHARS)<br /></span><span style="COLOR: #008080"> 29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        PatientManageBase.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self)<br /></span><span style="COLOR: #008080"> 30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        data</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">utils.list2dic(self.pm.listTodayRegInfo())<br /></span><span style="COLOR: #008080"> 31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.list</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">DataListCtrl.DataListCtrl(self,data)<br /></span><span style="COLOR: #008080"> 32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Bind(wx.EVT_SIZE, self.OnSize)<br /></span><span style="COLOR: #008080"> 33</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.list.Select(0)<br /></span><span style="COLOR: #008080"> 34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnSize(self, event):<br /></span><span style="COLOR: #008080"> 36</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        w,h </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> self.GetClientSizeTuple()<br /></span><span style="COLOR: #008080"> 37</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.list.SetDimensions(0, 0, w, h)<br /></span><span style="COLOR: #008080"> 38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> PatientManageDetailPanel(PatientManagePanelBase):<br /></span><span style="COLOR: #008080"> 40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 41</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    当天登记详细信息<br /></span><span style="COLOR: #008080"> 42</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 43</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent):<br /></span><span style="COLOR: #008080"> 44</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        PatientManagePanelBase.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,parent,False)<br /></span><span style="COLOR: #008080"> 45</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.btnAdd.Show(False)<br /></span><span style="COLOR: #008080"> 46</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.btnCancel.Show(False)<br /></span><span style="COLOR: #008080"> 47</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.lblNew.Show(False)        <br /></span><span style="COLOR: #008080"> 48</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 49</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> InitBasicInfo(self):<br /></span><span style="COLOR: #008080"> 50</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.idType</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.pm.listAllIdTypes()        <br /></span><span style="COLOR: #008080"> 51</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.sex</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">男</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">女</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">]<br /></span><span style="COLOR: #008080"> 52</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 53</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> InitDiseaseHistory(self):<br /></span><span style="COLOR: #008080"> 54</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.diseaseList</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.dic.listAllAvailableDiseaseTypeName()<br /></span><span style="COLOR: #008080"> 55</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 56</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> InitPrescription(self):<br /></span><span style="COLOR: #008080"> 57</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.medsList </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> self.dic.listAllAvailableGoodsName()<br /></span><span style="COLOR: #008080"> 58</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 59</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> InitControlPanel(self):<br /></span><span style="COLOR: #008080"> 60</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.operator</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.pm.listAllOperatorNames()<br /></span><span style="COLOR: #008080"> 61</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 62</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> SetEditable(self,editable</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">True):<br /></span><span style="COLOR: #008080"> 63</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        controls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">[self.cbIdType,self.txtPatientId,self.txtId,self.txtName,self.cbSex,self.dpcBirthday,self.txtAge,self.txtAddress,<br /></span><span style="COLOR: #008080"> 64</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  self.txtRegId,self.diseaseType,self.txtDisease,self.dpcStart,self.txtSuggestion,<br /></span><span style="COLOR: #008080"> 65</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  self.meds,<br /></span><span style="COLOR: #008080"> 66</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  self.cbOperator<br /></span><span style="COLOR: #008080"> 67</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  ]<br /></span><span style="COLOR: #008080"> 68</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> control </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> controls:<br /></span><span style="COLOR: #008080"> 69</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            control.Enable(editable)<br /></span><span style="COLOR: #008080"> 70</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            <br /></span><span style="COLOR: #008080"> 71</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> ShowPatientInfo(self,registrationId):<br /></span><span style="COLOR: #008080"> 72</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        vals</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.pm.getPatientInfo(registrationId)<br /></span><span style="COLOR: #008080"> 73</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.FillData(vals)<br /></span><span style="COLOR: #008080"> 74</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 75</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> FillData(self,dic):<br /></span><span style="COLOR: #008080"> 76</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 77</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        填充控件<br /></span><span style="COLOR: #008080"> 78</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 79</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        d</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.DateTime()<br /></span><span style="COLOR: #008080"> 80</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 81</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cbIdType.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">idtype</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 82</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtId.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">identityid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 83</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtPatientId.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">patientid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 84</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtName.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">name</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 85</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cbSex.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">sex</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 86</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 87</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        list</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">birthday</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">).split(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">-</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 88</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        d.Set(int(list[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]),int(list[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,int(list[0]))        <br /></span><span style="COLOR: #008080"> 89</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.dpcBirthday.SetValue(d)<br /></span><span style="COLOR: #008080"> 90</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 91</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtRegId.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">registrationid</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))        <br /></span><span style="COLOR: #008080"> 92</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtAddress.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">address</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 93</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtDisease.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">description</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080"> 94</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 95</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        list</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">start</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">).split(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">-</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 96</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        d.Set(int(list[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]),int(list[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,int(list[0]))            <br /></span><span style="COLOR: #008080"> 97</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.dpcStart.SetValue(d)<br /></span><span style="COLOR: #008080"> 98</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080"> 99</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtSuggestion.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">suggestion</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">100</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cbOperator.SetValue(dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">operator</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">101</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">102</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.diseaseType.Set(self.diseaseList)<br /></span><span style="COLOR: #008080">103</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> item </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">diseases</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080">104</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">#            print item</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">105</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> i </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> self.diseaseList:<br /></span><span style="COLOR: #008080">106</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">#                print i</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">107</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> item</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">i:<br /></span><span style="COLOR: #008080">108</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    self.diseaseType.Check(self.diseaseList.index(i),True)<br /></span><span style="COLOR: #008080">109</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    <br /></span><span style="COLOR: #008080">110</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.meds.Set(self.medsList)   <br /></span><span style="COLOR: #008080">111</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> item </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> dic.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">meds</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br /></span><span style="COLOR: #008080">112</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> i </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> self.medsList:<br /></span><span style="COLOR: #008080">113</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> item</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">i:<br /></span><span style="COLOR: #008080">114</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                    self.meds.Check(self.medsList.index(i),True)</span></span></div><br />刚开始我把选中单条记录(OnItemSelected)和双击单条记录(OnDoubleClick)这两个方法也写在DataListCtrl类中，但后来发现这样写不太通用，于是把它们提出来写在PatientManageTodayListPanel这个类中，然后在这里绑定DataListCtrl的单选和双击事件。<br />之前遇到一个问题：如何在单击菜单后打开一个wx.Notbook的Page，再次单击这个菜单时能自动跳到这个打开的Page上？查过wx.Notebook的API文档，没有发现现存的查找Page的方法，于是就自己想办法解决，后来我是这样解决的：<br />用一个字典来记录Page是否打开，以及它的index<br />然后在显示这个Page的时候更新这个字典：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">如何跳到打开的Page上</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">        </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">#用于记录菜单界面是否已经打开</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">        self.dicMenu</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人资料录入</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:(False,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                      </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人资料修改</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:(False,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">),<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                      </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">当天登记信息一览</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:(False,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                      }<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> ShowPatientInfoReg(self):<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        显示病历登记界面<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> self.dicMenu.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人资料录入</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[0]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">True:<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.win.SetSelection(self.dicMenu.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人资料录入</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            pm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">PM.PatientManageRegPanel(self.win)<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            exists</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.win.AddPage(pm, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">病人资料录入</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,select</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">True)<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            index</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.win.GetPageCount()</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            text</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">unicode(self.win.GetPageText(index)).encode(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">cp936</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.dicMenu.</span><span style="COLOR: #800080">__setitem__</span><span style="COLOR: #000000">(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">病人资料录入</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,(exists,index))<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Refresh()</span></span></div><br />截图：<br /><img style="WIDTH: 416px; HEIGHT: 564px" height="709" alt="todaydetail.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/todaydetail.jpg" width="1023" border="0" /><br /><img style="WIDTH: 413px; HEIGHT: 541px" height="709" alt="todaylist.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/todaylist.jpg" width="1024" border="0" /><br /><font color="#000000"><font color="#0000ff">【下期提示】</font><font color="#000000">完成病历组合查询</font></font><img src ="http://www.blogjava.net/joinose/aggbug/46914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-05-18 22:15 <a href="http://www.blogjava.net/joinose/archive/2006/05/18/46914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(08)：病人资料修改</title><link>http://www.blogjava.net/joinose/archive/2006/05/16/46455.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Tue, 16 May 2006 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/05/16/46455.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/46455.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/05/16/46455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/46455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/46455.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 【本期导读】		完成病人资料修改模块终于有空学习python了，五一放了七天假，回家看了看，原来世界每个角落天天都在变化，就连生我养我的那个小村庄也有较大的变化，差点不记得回家的路了。本以为这个小系统不会耗费太多时间的，可是一路做下来发现实际应用中还是会遇到很多困难的。最新几天看了看病人资料登记的代码，发现不够简洁，结构不太好，于是花了两天时间整理了一下，抽象出一个病案管理的基类，然后登记，修...&nbsp;&nbsp;<a href='http://www.blogjava.net/joinose/archive/2006/05/16/46455.html'>阅读全文</a><img src ="http://www.blogjava.net/joinose/aggbug/46455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-05-16 18:14 <a href="http://www.blogjava.net/joinose/archive/2006/05/16/46455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(07)：病人资料登记</title><link>http://www.blogjava.net/joinose/archive/2006/04/28/43801.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Fri, 28 Apr 2006 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/28/43801.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/43801.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/28/43801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/43801.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/43801.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】<font color="#000000">完成病人资料登记模块<br />五一前真是太忙了,没空研究这个系统,不过零零碎碎地有做一些,但上节计划要做的字典维护模块遇到一些技术问题,暂且放后处理,这周主要把</font><font color="#000000">病人资料登记模块的核心业务做好了,截图如下:<br /><img style="WIDTH: 505px; HEIGHT: 250px" height="708" alt="病人资料登记.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/病人资料登记.jpg" width="1024" border="0" /><br /></font><font color="#000000">字典维护模块遇到的问题有:</font><br /><font color="#000000">1.怎么用grid完成增加,更新及删除记录<br />2.如何做成一个通用的模板应用在所有字典的维护上<br /></font>【下期提示】<font color="#000000">完成病人资料修改模块</font></font>
<img src ="http://www.blogjava.net/joinose/aggbug/43801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-28 13:41 <a href="http://www.blogjava.net/joinose/archive/2006/04/28/43801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(06)：主界面</title><link>http://www.blogjava.net/joinose/archive/2006/04/18/41719.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Tue, 18 Apr 2006 11:27:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/18/41719.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/41719.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/18/41719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/41719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/41719.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>
		<font color="#000000">主界面开发，确定基本模块<br />沉寂一整周了，今天终于把主界面做好了。<br />最近7天特别忙，赶上公司项目发布最新版本，一大堆的测试任务不敢懈怠，当学习与工作冲突时还是应当以工作为重，学习暂放一边，所以这次学习比计划多花了几天，不过虽然内容很少，但也遇到了几个难题：<br />1.如何给窗体加上一个背景图片？<br />2.如何使HtmlWindow内的链接正常打开？<br />我想在窗体上显示一张背景图片，于是翻看wxPthon 的API文档，想找找有没有像VB里的frame的picture属性，但出乎意料的时，wx.Window中并没有这种属性，虽然可以在此之上再放一个图片控件，来达到同样的效果，正在发愁，于是拿起《<strong><font size="5">wxPython in Action</font></strong> 》(下文简称为PA)这本书快速探索一遍，终于找到办法了，原来要实现这样的效果，需要建立定制，参照里面的办法写了一个可以配置背景图片的window类:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> wx<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ImageBackGroundWindow(wx.Window):<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent, image):<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        wx.Window.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self, parent)<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.photo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> image.ConvertToBitmap()<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.positions </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [(0,0)]<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Bind(wx.EVT_PAINT, self.OnPaint)<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnPaint(self, evt):<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> wx.PaintDC(self)<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        brush </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> wx.Brush(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">sky blue</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dc.SetBackground(brush)<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dc.Clear()<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> x,y </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> self.positions:<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            dc.DrawBitmap(self.photo, x, y, True)</span></div>主界面剩余的难题就是怎么组织代码，UI编程最麻烦的就是这个了，再加上目前也没搜到什么好的为Python量身定做的UI设计工具，只能自己一行一行地写了，但这时就需要注意组织代码了，不然一个复杂的界面写出来都是一大堆难看懂的锁碎代码，我只是一个测试员，对开发接触才刚起步，对这方面的意识暂时也没有什么好的想法，但在《PA》一书中有讲到怎么写出一个漂亮简洁的wxPthon界面代码，有时间一定要好好研究一下。<br />经过几天的努力，主界面基本框架算是弄好了，剩下的就是各个业务模板的界面及具体业务实现了。我首先挑最容易的来处理，先做关于对话框，不过在做这个窗体时也遇到一个问题，即上述的第2个问题，后来发现是因为在htmlWindow类中少了这个方法：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnLinkClicked(self, linkinfo):<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> webbrowser<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            webbrowser.open(linkinfo.GetHref(), </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span></div><br />主界面和关于窗体截图如下：<br /><img style="WIDTH: 530px; HEIGHT: 406px" height="708" alt="main.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/main.jpg" width="1024" border="0" /><img height="500" alt="about.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/about.jpg" width="480" border="0" /><br /></font>
		<font color="#0000ff">【下期提示】</font>
		<font color="#000000">完成字典管理模块</font>
<img src ="http://www.blogjava.net/joinose/aggbug/41719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-18 19:27 <a href="http://www.blogjava.net/joinose/archive/2006/04/18/41719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(05)：登录模块</title><link>http://www.blogjava.net/joinose/archive/2006/04/11/40459.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Tue, 11 Apr 2006 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/11/40459.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/40459.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/11/40459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/40459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/40459.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>使用wxPthon开发界面，完成登录模块<br />wxPthon是一个非常强大的界面制作模块，下载地址是<a href="http://www.wxpython.org/">http://www.wxpython.org/</a>。wxPython安装包中附送了大量实例代码，每个界面控件的使用方法都有介绍，同时还可以去查看在线api文档<a href="http://www.wxpython.org/docs/api/wx-module.html">http://www.wxpython.org/docs/api/wx-module.html</a>，这个文档的风格很像javadoc，习惯了java api 文档的人一看就清楚，如果想系统地了解一下wyPython则可以下载官方推荐的《<strong><font size="5">wxPython in Action</font></strong> 》一书。<br />粗略浏览一下wyPtyhon Demo，便立即开始尝试编写ClinicOS的登录模块，首先确认一下界面表现力和功能：<br />界面元素：<br />1.一个登录窗体<br />2.帐号标签及文本框，密码标签及文本框<br />3.确定和取消按钮<br />功能：<br />1.单击『确定』按钮时能验证输入的帐号和密码是否正确，如果正确则显示Clinic主界面(TODO，暂时让它显示一个成功消息框)，否则提示“帐号或密码错误”。<br />2.单击『取消』按钮退出登录模块<br />经过一番努力，终于把界面画好了，暂时丑了点，待以后给它美容。<br /><img height="300" alt="登录.jpg" src="http://www.blogjava.net/images/blogjava_net/joinose/登录.jpg" width="400" border="0" /><br />不过画这点界面很不方便，得有点耐心，特别是控件的位置要全手工地调坐标，这对于缺乏方向和位置感的我来说更是痛苦<img height="19" src="http://www.blogjava.net/Emoticons/red_smile.gif" width="19" border="0" />，想找一个可以做界面用的IDE for python，却始终没找到，没办法，只好将痛苦忍受到底。<br />以下是完整的代码：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> -*- coding: UTF-8 -*-</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> $Id: login.py 12 2006-04-11 03:20:48Z Administrator $</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />登录模块<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> wx<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> dbconnect,utils<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> LoginFrame(wx.Frame):<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    登录界面<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self):<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        创建一个自定义的窗体<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        loginstyle</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.DEFAULT_FRAME_STYLE</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">(wx.RESIZE_BORDER</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                           wx.MINIMIZE_BOX</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                           wx.MAXIMIZE_BOX</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                                           wx.CLOSE_BOX)<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        wx.Frame.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,None,id</span><span style="COLOR: #000000">=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,title</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">登录</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">loginstyle,size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">400</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">300</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        panel</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.Panel(self)<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        lblAccount</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.StaticText(panel,label</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">帐    号：</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtAccount</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.TextCtrl(panel,size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">125</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">),pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">160</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        lblPwd</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.StaticText(panel,label</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">密    码：</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">150</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.txtPwd</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.TextCtrl(panel,size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">125</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">),pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">160</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">150</span><span style="COLOR: #000000">),style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.TE_PASSWORD)<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        btnOK</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.Button(panel,label</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">确定(&amp;O)</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">150</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">))<br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Bind(wx.EVT_BUTTON,self.OnClickOK,btnOK)<br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        btnQuit</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.Button(panel,label</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">取消(&amp;C)</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">240</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">))        <br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Bind(wx.EVT_BUTTON,self.OnClickQuit,btnQuit)<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Bind(wx.EVT_CLOSE,self.OnCloseWindow)<br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> MessageBox(self,description,title):<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dlg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> wx.MessageDialog(self,description,<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                       title,<br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                       wx.OK </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> wx.ICON_INFORMATION<br /></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                       </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_INFORMATION</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">43</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">                       )<br /></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dlg.ShowModal()<br /></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dlg.Destroy()<br /></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnClickOK(self,event):<br /></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">48</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        单击确定按钮响应事件<br /></span><span style="COLOR: #008080">49</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        sql</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">51</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        select count(id) as count from d_operator<br /></span><span style="COLOR: #008080">52</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        sql</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">sql</span><span style="COLOR: #000000">+</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> where account='</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">self.txtAccount.GetValue()</span><span style="COLOR: #000000">+</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000"> and password='</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">utils.encrypt(self.txtPwd.GetValue())</span><span style="COLOR: #000000">+</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        conn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">dbconnect.SqliteConnection()<br /></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        list</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">conn.execute(sql)<br /></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> int(list[0][0])</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.MessageBox(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">登录成功</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">成功</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.MessageBox(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">帐号或密码错误，请重新输入!</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">登录</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnClickQuit(self,event):<br /></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">63</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        单击取消按钮响应事件<br /></span><span style="COLOR: #008080">64</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Close(True)        <br /></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnCloseWindow(self,event):<br /></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.Destroy()<br /></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> LoginApp(wx.App):<br /></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">70</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    登录模块<br /></span><span style="COLOR: #008080">71</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> OnInit(self):<br /></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        frame</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">LoginFrame()<br /></span><span style="COLOR: #008080">74</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        frame.Show()<br /></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> True<br /></span><span style="COLOR: #008080">76</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">77</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__name__</span><span style="COLOR: #000000">==</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__main__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">78</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    app</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">LoginApp()<br /></span><span style="COLOR: #008080">79</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    app.MainLoop()</span></span></div>其中53行中使用的<span style="COLOR: #000000">utils.encrypt这个方法，是自己写的一个md5加密方法，这在python里非常简单，只需要3句：<br /></span>1.导入md5和base64：import md5,base64<br />2.创建一个md5对象实例： md5.new("字符串").digest()<br />3.将生成的md5串做个base64转换：base64.b64encode(md5.new("字符串").digest()这个返回的就是加密字符串。<br /><br /><font color="#0000ff">【下期提示】</font><font color="#000000">逐步</font><font color="#000000">深入学习</font><font color="#000000"><font color="#000000">wxPython</font>，</font> 制作ClinicOS主界面<img src ="http://www.blogjava.net/joinose/aggbug/40459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-11 14:11 <a href="http://www.blogjava.net/joinose/archive/2006/04/11/40459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(04)：PySQLite连接SQLite</title><link>http://www.blogjava.net/joinose/archive/2006/04/09/40122.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Sun, 09 Apr 2006 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/09/40122.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/40122.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/09/40122.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/40122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/40122.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>使用PySQLite连接SQLite遇到的问题与解决方法<br />Python要操作SQLite可以使用Pyslqite模块，最新的模块可以去<a href="http://www.pysqlite.org/">www.pysqlite.org</a>下载，当初下载的时候顺便简单看了看usage-guide(<a href="http://initd.org/pub/software/pysqlite/doc/usage-guide.html">http://initd.org/pub/software/pysqlite/doc/usage-guide.html</a>)，觉得挺简单的，没有仔细研究便开始考虑编写，我考虑把sqlite的访问写成一个类，在类的初始化和销毁时候分别建立连接和关闭连接，然后再添加一个执行sql语句的方法，由于传入的sql可能没有返回值也可能有返回值，而返回的值可能是单列值也可能是多条记录，基于这种复杂情况，就让这个方法返回一个列表，管它返回什么，通通加到列表中然后返回，我觉得在这一点上，python比其它语言方便多了。下面是这个类：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> -*- coding: UTF-8 -*-</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> $Id: dbconnect.py 8 2006-04-08 14:21:32Z Administrator $</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> ConfigParser<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> locale<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> pysqlite2 </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> dbapi2 as sqlite<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SqliteConnection:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,dbname):<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        初始化数据库连接<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000">        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> sqlite.connect(dbname)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> execute(self,sql):<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        执行传入的sql语句,返回一个元组或者None<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cu</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.conn.cursor()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cu.execute(sql)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn.commit()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.rows</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">[]<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> self.row </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> self.cu:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.rows.append(self.row)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> self.rows<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__del__</span><span style="COLOR: #000000">(self):<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000">关闭数据库连接</span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn.close()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> test():<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000">测试方法</span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    config</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ConfigParser.ConfigParser()<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    config.read(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">config</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    dbname</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">config.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">SQLiteDB</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">filename</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> SqliteConnection(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">:memory:</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">create table person(lastname, firstname)</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">insert into person(lastname,firstname) values('三','张')</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">insert into person(lastname,firstname) values('四','李')</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__name__</span><span style="COLOR: #000000">==</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__main__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test()</span></div>之前简单试过一下访问sqlite一切OK，可是当然运行一下这个类时，结果居然出错了：<br />Traceback (most recent call last):<br />  File "D:\source\dbconnect.py", line 49, in<br />?<br />    test()<br />  File "D:\source\dbconnect.py", line 42, in<br />test<br />    temp=test.execute("select * from person")<br />  File "D:\source\dbconnect.py", line 22, in<br />execute<br />    self.cu.execute(sql)<br />pysqlite2.dbapi2.OperationalError: Could not decode to UTF-8 column firstname wi<br />th text 张<br />既然出错了，那么大概是这几种情况：<br />1.pysqlite不支持中文<br />2.sqlite不支持中文<br />3.代码出了问题<br />出错之后，经过测试，排除第1和2两种可能，<br />于是我仔细简单代码，可还是没有找到出错原因，于是想查看pysqlite源代码，可是他的代码是封闭在一个pyd的二进制文件中的，没办法查看，于是去下载pysqlite的源代码，拿到源代码后在pysqlite-2.2.0\src\cursor.c这个代码中找到了OperationalError错误类型，知道原来是字符转换时出这个错。于是我就试试将返回值转为可是我弄了很久都没有弄好，在网上google一下也没有找到这方面的资料，找了一天了也没有找到解决的办法，无奈之下险些泄气。虽然之前看过pysqlite文档，但看得不仔细，只是简单浏览，当时只是想这东西应该挺简单的，例子也够详细就没有花太多时间去看文档，为得也是节省时间。现在遇到问题了，还是老老实实仔细看看pysqlite文档吧。果然不枉我滴着眼药水把它看完，终于找到原因了，原来pysqlite中有个<span class="p_identifier">con</span><span class="p_operator">.</span><span class="p_identifier">text_factory可以解决这个问题，这个参数默认值是unicode ，现在只需要把它设置成str就可以了：<br /></span><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> -*- coding: UTF-8 -*-</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="COLOR: #008000"> $Id: dbconnect.py 8 2006-04-08 14:21:32Z Administrator $</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> ConfigParser<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> locale<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> pysqlite2 </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> dbapi2 as sqlite<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SqliteConnection:<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,dbname):<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        初始化数据库连接<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000">        <br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> sqlite.connect(dbname)<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn.row_factory </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> sqlite.Row </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">加上这句才能使用列名来返回值</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">        self.conn.text_factory</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">str </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">加上这一句,否则出现"Could not decode to UTF-8 column"错误</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> execute(self,sql):<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        执行传入的sql语句,返回一个元组或者None<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #800000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cu</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">self.conn.cursor()<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.cu.execute(sql)<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn.commit()<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.rows</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">[]<br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> self.row </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> self.cu:<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            self.rows.append(self.row)<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> self.rows<br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__del__</span><span style="COLOR: #000000">(self):<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000">关闭数据库连接</span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        self.conn.close()<br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000"> test():<br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #800000">"""</span><span style="COLOR: #800000">测试方法</span><span style="COLOR: #800000">"""</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    config</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ConfigParser.ConfigParser()<br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    config.read(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">config</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    dbname</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">config.get(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">SQLiteDB</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">filename</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> SqliteConnection(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">:memory:</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">create table person(lastname, firstname)</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">insert into person(lastname,firstname) values('三','张')</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">insert into person(lastname,firstname) values('四','李')</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    temp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">test.execute(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">select * from person</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> temp<br /></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    encoding </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> locale.getdefaultlocale()[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]<br /></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> str(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">第一条记录:</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">).decode(encoding)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str(temp[0][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]).decode(encoding)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str(temp[0][0]).decode(encoding)<br /></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000"> str(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">第二条记录:</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">).decode(encoding)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str(temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]).decode(encoding)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str(temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][0]).decode(encoding)<br /></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">assert</span><span style="COLOR: #000000"> str(temp[0][</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]).decode(encoding)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str(temp[0][0]).decode(encoding)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">str(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">张三</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).decode(encoding)<br /></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">__name__</span><span style="COLOR: #000000">==</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">__main__</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">:<br /></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    test()</span></span></div>至此总算解决了这个困扰我一天的问题了。<br /><font color="#0000ff">【下期提示】</font><font color="#000000">开始学习wxPython，体验一下它的强大界面表现力。</font><img src ="http://www.blogjava.net/joinose/aggbug/40122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-09 22:13 <a href="http://www.blogjava.net/joinose/archive/2006/04/09/40122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(03)：数据库设计与SQLite初体验</title><link>http://www.blogjava.net/joinose/archive/2006/04/07/39912.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Fri, 07 Apr 2006 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/07/39912.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/39912.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/07/39912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/39912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/39912.html</trackback:ping><description><![CDATA[
		<font color="#0000ff">【本期导读】</font>设计数据库结构<br />这两天简单浏览一下SQLite的相关文档，发现这个东东确实还不错，至少比Access好多了，能自动根据数据来分配相应空间，不会像Access那样用着用着就变肥了。<br />作为轻量级的本地数据库，我所期望的功能都具备了：<br />1.能否保存复杂数据，支持Blob。<br />2.支持自动编号。但前提是将主键一定要是Integer类型。能自动根据当前记录最大值向下继续编号。<br />3.支持标准SQL语句。对数据类型检查不严格，能自动将数据类型转成SQLite标准数据类型，这一点在脚本移植很管用，能将其它数据库管理系统的脚本直接导入，但要注意避免使用SQLite暂不支持的命令。<br />4.支持触发器。这个功能不错。什么时候支持存储过程就更好了，^_^<br />对SQLite了解还不是很深入，边用边学吧。<br />开始着手建数据库，搜索了一下数据库模型工具，以前没有用过什么这方面的工具，随便搜到一个CASEStudio。用了一下，感觉功能还不错，支持很多数据库，能自动生成数据库脚本，可惜不支持SQLite数据库引擎。胡乱画了一通，终于把ClinicOS数据库E-R图画好了，<br /><img style="WIDTH: 517px; HEIGHT: 644px" height="661" alt="ClinicDB.png" src="http://www.blogjava.net/images/blogjava_net/joinose/ClinicDB.png" width="737" border="0" /><br />也顺便生成了数据库脚本，经过零零散散的近5个小时的努力，数据库结构总算搭建好了。<br /><font color="#0000ff">【下期提示】</font><font color="#000000">准备学习Python了，先学习PySQLite，解决编写数据库读写问题</font><img src ="http://www.blogjava.net/joinose/aggbug/39912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-07 21:09 <a href="http://www.blogjava.net/joinose/archive/2006/04/07/39912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(02)：需求分析</title><link>http://www.blogjava.net/joinose/archive/2006/04/05/39432.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Wed, 05 Apr 2006 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/05/39432.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/39432.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/05/39432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/39432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/39432.html</trackback:ping><description><![CDATA[
		<p dir="ltr" style="MARGIN-RIGHT: 0px">
				<font color="#0000ff">【本期导读】</font>
				<font color="#000000">确定</font>ClinicOS功能<br />工作任务很重，没什么时间学习，很不容易挤出一点时间来研究我的学习任务。<br />这一节我把题目叫作《需求分析》实在<img height="19" src="http://www.blogjava.net/Emoticons/red_smile.gif" width="19" border="0" />......惭愧。没有学过软件工程，更没有做过需求分析，只是在凭借自己的想当然来罗列功能，打算有空的时候去找本好书好好学学软件工程。接下来还是罗列一下我的想法吧，我觉得这样的一个小系统应该包括以下功能：<br /><font color="#008000"><font color="#006400">一.病人病史档案管理<br /> 1.登记病人基本信息<br /> 2.登记病人本次病历<br /> 3.登记本次病人症状、医生处方、所用治疗药品<br /> 4.打印病历卡<br /> 5.查询病史档案<br />二.药品管理<br /> 1.药品入库登记<br /> 2.入库审核<br /> 3.药品出库登记，包括报废出库及领药出库<br /> 4.出库审核<br /> 5.物品状态提醒：过期药品警戒,库存数量警戒<br /> 6.入库查询及统计<br /> 7.库存查询及统计<br /> 8.出库查询及统计<br /> 9.报废药品及统计<br />三.财务结算<br /> 1.病人收费登记：诊断费+药品费<br /> 2.药品采购支出登记<br /> 3.每日收支报表<br /> 4.每月收支情况报表<br /> 5.年度收支统计分析表</font><br /></font><font color="#0000ff">【下期提示】</font><font color="#000000">要学习的东西很多，下来我想还是从简单入手，先学Sqlite，不知道有没有什么好用的用来写Sqlite脚本的客户端工具?</font></p>
<img src ="http://www.blogjava.net/joinose/aggbug/39432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-05 17:01 <a href="http://www.blogjava.net/joinose/archive/2006/04/05/39432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Interest]ClinicOS(01)：总述</title><link>http://www.blogjava.net/joinose/archive/2006/04/04/39170.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Tue, 04 Apr 2006 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/04/04/39170.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/39170.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/04/04/39170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/39170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/39170.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#0000ff">【本期导读】</font>
				<font color="#000000">实例学</font>
				<font color="#000000">Python<br />去年大约11月一位牛人同事鼓励我去掌握一门脚本语言并推荐使用Python，<br />我是从那时开始接触它的，虽然一度用它解决不少文本处理的小问题，但总觉得学习得不刻深入，<br />所以想系统地学习一下Python，并决定通过一个综合的实例dive into python。<br />学习背景说完了，该谈正题了，我决定做一个诊所管理系统ClinicOS，呵呵，这种软件满大街都是，<br />但是像我这么无聊，决定用Python实现的跨平台的版本应该还没出现吧？题目定了，开始着手开发吧，<br />首先准备工具，除了必要的Python2.4外还需要准备以下几个模块：<br />1.wxPthon2.6。用于做界面。<br />2.py2exe0.6.3。用它打包，把python程序转成exe。<br />3.pySqlite2.1.3。由于数据库选择用sqlite,所以选它作为sqlite开发接口。<br />4.Sqlite。用作数据存储。<br />看来要学的东西很多，不过在开始开发前，先给这个学习定一个deadline吧，争取<font style="BACKGROUND-COLOR: #ff0000">4月23日</font></font>之前提交一个可用版本。<br /><font color="#0000ff">【下期提示】<font color="#000000">接下来要确定一下软件需求了，不知道各位路过的大侠能否提供一些建议？或者期望这个小软件提供什么功能？</font></font></p>
<img src ="http://www.blogjava.net/joinose/aggbug/39170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-04-04 15:09 <a href="http://www.blogjava.net/joinose/archive/2006/04/04/39170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>