﻿<?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>C++博客-Cpper-随笔分类-Python脚本</title><link>http://www.cppblog.com/gaimor/category/16240.html</link><description>C/C++高级工程师
Android高级软件工程师
IT集成工程师
音频工程师
熟悉c,c++,java,c#,py,js,asp等多种语言
程序猿</description><language>zh-cn</language><lastBuildDate>Sat, 01 Apr 2017 13:00:36 GMT</lastBuildDate><pubDate>Sat, 01 Apr 2017 13:00:36 GMT</pubDate><ttl>60</ttl><item><title>KDJ指标代码</title><link>http://www.cppblog.com/gaimor/archive/2017/04/01/214805.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Sat, 01 Apr 2017 06:57:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2017/04/01/214805.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/214805.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2017/04/01/214805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/214805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/214805.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;KDJ:<br />&nbsp;&nbsp;&nbsp;&nbsp;history&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">''</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;min&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">99999.99</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0.0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0.0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0.0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;rsv&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0.0</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800080; ">__init__</span><span style="color: #000000; ">(self,code):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.code&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;code<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;checkMinAndMax(self,n):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">99999.9</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0.0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;item&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;self.history:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;item[</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;min:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;item[</span><span style="color: #000000; ">3</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;item[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;max:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;item[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;[min,max]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;update(self,date,start,close,low,high,n):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.history.append([date,start,close,low,high])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;len(self.history)&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.min&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(self.min,low)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.max&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;max(self.max,high)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;[date,self.k,self.d,0,start,close,low,high]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;len(self.history)&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;n:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">del</span><span style="color: #000000; ">&nbsp;self.history[0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;self.checkMinAndMax(n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsv&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(close&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;p[0])</span><span style="color: #000000; ">/</span><span style="color: #000000; ">(p[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">-</span><span style="color: #000000; ">p[0])</span><span style="color: #000000; ">*</span><span style="color: #000000; ">100.0</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;self.k<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldd&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;self.d<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(rsv&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">oldk)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3.0</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(self.k&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">oldd)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3.0</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">,max(self.k,0))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">,max(self.d,0))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">*</span><span style="color: #000000; ">self.k&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">*</span><span style="color: #000000; ">self.d<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">,max(j,0))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;[date,self.k,self.d,j,start,close,low,high]</span></div><img src ="http://www.cppblog.com/gaimor/aggbug/214805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2017-04-01 14:57 <a href="http://www.cppblog.com/gaimor/archive/2017/04/01/214805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C语言调用python脚本3</title><link>http://www.cppblog.com/gaimor/archive/2013/12/07/204649.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Sat, 07 Dec 2013 07:48:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2013/12/07/204649.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/204649.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2013/12/07/204649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/204649.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/204649.html</trackback:ping><description><![CDATA[脚本如下:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">from&nbsp;bs4&nbsp;import&nbsp;BeautifulSoup<br /><br />def&nbsp;list_get(file):<br />&nbsp;&nbsp;&nbsp;&nbsp;soup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;BeautifulSoup(open(file))<br />&nbsp;&nbsp;&nbsp;&nbsp;alist&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;soup.find_all(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">,class_&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">link</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;alist:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.append(i.</span><span style="color: #0000FF; ">get</span><span style="color: #000000; ">(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">href</span><span style="color: #000000; ">'</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;list:<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;print(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;list<br /><br /></span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;__name__</span><span style="color: #000000; ">==</span><span style="color: #000000; ">"</span><span style="color: #000000; ">__main__</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;list_get(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">List.htm</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)</span></div><br />list_get函数返回的是list字符串对象<br />其c语言调用的代码如下:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Python.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;GDALPythonObjectToCStr(PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pyObject);<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Initialize();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">Py_IsInitialized())&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">import&nbsp;sys</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">sys.path.append('./script')</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pModule;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pDict;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pFunc;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pModule&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyImport_ImportModule(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">list</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pModule)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;list.py</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">PAUSE</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pDict&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyModule_GetDict(pModule);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pDict)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pFunc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyDict_GetItemString(pDict,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">list_get</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pFunc&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">PyCallable_Check(pFunc))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;function&nbsp;[list_get]</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;args&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyTuple_New(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyTuple_SetItem(args,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,Py_BuildValue(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">s</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">List.htm</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyObject_CallObject(pFunc,args);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PySequence_Check(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">check:%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ret);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;length&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PySequence_Size(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">length:%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,length);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">length;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;obj&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PySequence_GetItem(value,i);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">char*&nbsp;str&nbsp;=&nbsp;PyBytes_AS_STRING(obj);</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;GDALPythonObjectToCStr(obj);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">link:%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,str);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;free(str);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(pModule);<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Finalize();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">PAUSE</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /><br /></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Return&nbsp;a&nbsp;NULL&nbsp;terminated&nbsp;c&nbsp;String&nbsp;from&nbsp;a&nbsp;PyObject&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Result&nbsp;must&nbsp;be&nbsp;freed&nbsp;with&nbsp;GDALPythonFreeCStr&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;GDALPythonObjectToCStr(PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pyObject)<br />{<br /></span><span style="color: #0000FF; ">#if</span><span style="color: #000000; ">&nbsp;PY_VERSION_HEX&nbsp;&gt;=&nbsp;0x03000000</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(PyUnicode_Check(pyObject))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pszStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pszNewStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Py_ssize_t&nbsp;nLen;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pyUTF8Str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyUnicode_AsUTF8String(pyObject);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyBytes_AsStringAndSize(pyUTF8Str,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">pszStr,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">nLen);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pszNewStr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)malloc(nLen</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pszNewStr,pszStr,nLen</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Py_XDECREF(pyUTF8Str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;pszNewStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(PyBytes_Check(pyObject))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pszStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pszNewStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Py_ssize_t&nbsp;nLen;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyBytes_AsStringAndSize(pyObject,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">pszStr,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">nLen);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pszNewStr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)malloc(nLen</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(pszNewStr,pszStr,nLen</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;pszNewStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pszStr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)malloc(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pszStr[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;pszStr;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #0000FF; ">#else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;PyString_AsString(pyObject);<br /></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />}<br /></span></div><img src ="http://www.cppblog.com/gaimor/aggbug/204649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2013-12-07 15:48 <a href="http://www.cppblog.com/gaimor/archive/2013/12/07/204649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Beautiful Soup 解析html文档</title><link>http://www.cppblog.com/gaimor/archive/2013/12/07/204645.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Sat, 07 Dec 2013 03:17:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2013/12/07/204645.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/204645.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2013/12/07/204645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/204645.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/204645.html</trackback:ping><description><![CDATA[不得不承认，有时候使用python比c++方便很多，<br />就拿解析html来说，使用 Beautiful Soup 就比使用libtidy方便很多 - 当然也有可能是<div>Beautiful Soup封装的很厉害吧<br /><br />使用Beautiful Soup的一个例子如下:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">from</span><span style="color: #000000; ">&nbsp;bs4&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;BeautifulSoup<br /><br />soup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;BeautifulSoup(open(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">List.htm</span><span style="color: #800000; ">'</span><span style="color: #000000; ">))<br /></span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;soup.find_all(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">a</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,class_&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">link</span><span style="color: #800000; ">'</span><span style="color: #000000; ">):<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;(a.get(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">href</span><span style="color: #800000; ">'</span><span style="color: #000000;">))</span></div></div>目的是找出html中class属性为link的a节点对应的href属性字符串<br />如果是使用c++ libtidy的话<br />对应的代码如下:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Bool&nbsp;TIDY_CALL&nbsp;tidyFilterCb(TidyDoc&nbsp;tdoc,TidyReportLevel&nbsp;lvl,</span><span style="color: #0000FF; ">uint</span><span style="color: #000000; ">&nbsp;line,</span><span style="color: #0000FF; ">uint</span><span style="color: #000000; ">&nbsp;col,ctmbstr&nbsp;mssg)<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;no;<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;extractContent(TidyNode&nbsp;node,TidyDoc&nbsp;doc);<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;parseContent(TidyNode&nbsp;node,TidyDoc&nbsp;doc)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TidyNode&nbsp;child;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(child&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyGetChild(node);child;child&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyGetNext(child))<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(tidyNodeIsA(child))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extractContent(child,doc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parseContent(child,doc);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;extractContent(TidyNode&nbsp;node,TidyDoc&nbsp;doc)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(yes&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;tidyNodeIsA(node))<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TidyAttr&nbsp;cls&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyAttrGetCLASS(node);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(cls&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)tidyAttrValue(cls);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">strcmp(value,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">link</span><span style="color: #000000; ">"</span><span style="color: #000000; ">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TidyAttr&nbsp;href&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyAttrGetHREF(node);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(href&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;link&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)tidyAttrValue(href);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">link:%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,link);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;parseContent(node,doc);<br />}<br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;tidyParseHtml(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;file)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TidyDoc&nbsp;doc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyCreate();<br />&nbsp;&nbsp;&nbsp;&nbsp;tidySetReportFilter(doc,tidyFilterCb);<br />&nbsp;&nbsp;&nbsp;&nbsp;tidyParseFile(doc,file);<br />&nbsp;&nbsp;&nbsp;&nbsp;TidyNode&nbsp;body&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyGetBody(doc);<br />&nbsp;&nbsp;&nbsp;&nbsp;TidyNode&nbsp;child;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(child&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyGetChild(body);child;child&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tidyGetNext(child))<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parseContent(child,doc);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;tidyRelease(doc);&nbsp;<br />}</span></div>还是很啰嗦的<br /><br />当然下面的python代码也能完成任务:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">from&nbsp;bs4&nbsp;import&nbsp;BeautifulSoup<br /><br />soup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;BeautifulSoup(open(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">List.htm</span><span style="color: #000000; ">'</span><span style="color: #000000; ">))<br />list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;soup.select(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a[class="link"]</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;list:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;a.has_attr(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">href</span><span style="color: #000000; ">'</span><span style="color: #000000; ">):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;(a.</span><span style="color: #0000FF; ">get</span><span style="color: #000000; ">(</span><span style="color: #000000; ">'</span><span style="color: #000000; ">href</span><span style="color: #000000; ">'</span><span style="color: #000000; ">))</span></div>如果想分析网页我觉得BeatifulSoup绝对是一个利器<br />链接:<div>http://www.crummy.com/software/BeautifulSoup/bs4/doc/</div><img src ="http://www.cppblog.com/gaimor/aggbug/204645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2013-12-07 11:17 <a href="http://www.cppblog.com/gaimor/archive/2013/12/07/204645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c语言调用Python脚本-2</title><link>http://www.cppblog.com/gaimor/archive/2013/01/15/197300.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Tue, 15 Jan 2013 13:39:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2013/01/15/197300.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/197300.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2013/01/15/197300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/197300.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/197300.html</trackback:ping><description><![CDATA[python代码二段:<br /><br />call.py<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;test():<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">hello&nbsp;world</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /><br /><br /></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;add(a,b):<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;b</span></div><br />api.py<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;io<br /><br /></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;load_test():<br />&nbsp;&nbsp;&nbsp;&nbsp;fp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">call.py</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">r</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">''</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;fp:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;fp.read()<br />&nbsp;&nbsp;&nbsp;&nbsp;fp.close()<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000;">&nbsp;buffer<br /><br />cpp代码:<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Python.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Initialize();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">Py_IsInitialized())&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">import&nbsp;sys</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">sys.path.append('./')</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pName;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pModule;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pDict;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pFunc;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pName&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyString_FromString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">api</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;pModule&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyImport_Import(pName);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pModule)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;call.py</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pDict&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyModule_GetDict(pModule);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pDict)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFunc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyDict_GetItemString(pDict,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">load_test</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pFunc&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">PyCallable_Check(pFunc))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;function&nbsp;[test]</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pFn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyObject_CallObject(pFunc,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;buffer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyString_AsString(pFn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,buffer);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;o&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Py_CompileString(buffer,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">none</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,Py_file_input);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;m&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyImport_ExecCodeModule(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">a.a</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,o);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyModule_GetDict(m);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFunc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyDict_GetItemString(d,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">add</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pFunc&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">PyCallable_Check(pFunc))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;function&nbsp;[add]</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;args&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyTuple_New(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyTuple_SetItem(args,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,Py_BuildValue(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">l</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyTuple_SetItem(args,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,Py_BuildValue(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">l</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pAdded&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyObject_CallObject(pFunc,args);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyInt_AsLong(pAdded);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">add&nbsp;value:%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ret);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Finalize();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">PAUSE</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></div><br /><span style="color: #000000;">这段代码和上一篇有点区别<br />主要区别是从从内存载入python模块然后调用函数<br />主要部分是这块:<br /><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyObject* o = Py_CompileString(buffer,"none",Py_file_input);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyObject* m = PyImport_ExecCodeModule("a.a",o);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyObject* d = PyModule_GetDict(m);</div>buffer是python源码字符串<br /><br />在python2.7中执行正常<br /></span></div><img src ="http://www.cppblog.com/gaimor/aggbug/197300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2013-01-15 21:39 <a href="http://www.cppblog.com/gaimor/archive/2013/01/15/197300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c语言调用Python脚本</title><link>http://www.cppblog.com/gaimor/archive/2013/01/14/197270.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Mon, 14 Jan 2013 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2013/01/14/197270.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/197270.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2013/01/14/197270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/197270.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/197270.html</trackback:ping><description><![CDATA[先上python代码:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#&nbsp;call.py<br /><br />def&nbsp;test():<br />&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">hello&nbsp;world</span><span style="color: #000000; ">'</span><span style="color: #000000; "><br /><br /><br />def&nbsp;add(a,b):<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;b</span></div><br />再上c代码<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Python.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Initialize();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">Py_IsInitialized())&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">import&nbsp;sys</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyRun_SimpleString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">sys.path.append('./')</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pName;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pModule;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pDict;<br />&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pFunc;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pName&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyString_FromString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">call</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;pModule&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyImport_Import(pName);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pModule)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;call.py</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pDict&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyModule_GetDict(pModule);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pDict)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFunc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyDict_GetItemString(pDict,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">test</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pFunc&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">PyCallable_Check(pFunc))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;function&nbsp;[test]</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject_CallObject(pFunc,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFunc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyDict_GetItemString(pDict,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">add</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">pFunc&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">PyCallable_Check(pFunc))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">can't&nbsp;find&nbsp;function&nbsp;[test]</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;args&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyTuple_New(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyTuple_SetItem(args,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,Py_BuildValue(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">l</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyTuple_SetItem(args,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,Py_BuildValue(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">l</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PyObject&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">pAdded&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyObject_CallObject(pFunc,args);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;PyInt_AsLong(pAdded);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">add&nbsp;value:%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,ret);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(pName);<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(pDict);<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_DECREF(pModule);<br />&nbsp;&nbsp;&nbsp;&nbsp;Py_Finalize();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">PAUSE</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}<br /></span></div>就不做解释了 <br />不过如何从字符串中载入模块？<img src ="http://www.cppblog.com/gaimor/aggbug/197270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2013-01-14 21:44 <a href="http://www.cppblog.com/gaimor/archive/2013/01/14/197270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用python获取文件夹下文件名字并保存.</title><link>http://www.cppblog.com/gaimor/archive/2012/11/10/195022.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Sat, 10 Nov 2012 10:53:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2012/11/10/195022.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/195022.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2012/11/10/195022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/195022.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/195022.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;glob<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;io<br /><br />file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">out.txt</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">w</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /><br /></span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;filename&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;glob.glob(</span><span style="color: #800000; ">"</span><span style="color: #800000; ">E:\\*.cpp</span><span style="color: #800000; ">"</span><span style="color: #000000; ">):<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">@</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;filename<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">@\n</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;file.write(str)<br /><br />file.close()</span></div><img src ="http://www.cppblog.com/gaimor/aggbug/195022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2012-11-10 18:53 <a href="http://www.cppblog.com/gaimor/archive/2012/11/10/195022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记-6.QApplication和基本控件的使用</title><link>http://www.cppblog.com/gaimor/archive/2011/03/16/141944.html</link><dc:creator>ccsdu2009</dc:creator><author>ccsdu2009</author><pubDate>Wed, 16 Mar 2011 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/gaimor/archive/2011/03/16/141944.html</guid><wfw:comment>http://www.cppblog.com/gaimor/comments/141944.html</wfw:comment><comments>http://www.cppblog.com/gaimor/archive/2011/03/16/141944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gaimor/comments/commentRss/141944.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gaimor/services/trackbacks/141944.html</trackback:ping><description><![CDATA[接上文，这篇学学QT中基本控件的使用和QApplication对象<br>1.什么是QApplication?<br>文档说明:<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Arial; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px" class=Apple-style-span><span style="LINE-HEIGHT: 20px; FONT-FAMILY: Verdana; COLOR: #363534; FONT-SIZE: 13px" class=Apple-style-span>The QApplication class manages the GUI application's control flow and main settings.<span style="TEXT-DECORATION: underline"><br>Application类管理GUI程序控制流和主要参数设置<br><span style="TEXT-DECORATION: underline"></span></span><span style="TEXT-DECORATION: underline"><span style="TEXT-DECORATION: underline"></span></span></span></span>QApplication继承于QCoreApplication。后者提供了控制台程序的事件流<br>2.基本控件的使用例子:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QApplication</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QLabel</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QPalette</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;QT_HTML</span><span style="COLOR: #000000"><br><br>QLabel</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;label&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;initlabel()<br>{<br>#ifndef&nbsp;QT_HTML<br>&nbsp;&nbsp;&nbsp;&nbsp;label&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QLabel(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;Qt!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;label&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QLabel(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;h2&gt;&lt;i&gt;Hello&lt;/i&gt;&lt;font&nbsp;color=red&gt;Qt!&lt;/font&gt;&lt;/h2&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;set&nbsp;size</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setBaseSize(</span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">48</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;set&nbsp;alignment</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setAlignment(Qt::AlignHCenter);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;sht&nbsp;background&nbsp;color</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QColor&nbsp;bk(</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">125</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;QPalette&nbsp;palette(bk);<br>&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setPalette(palette);<br>}<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;app.setApplicationName(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">QT&nbsp;Test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;initlabel();<br>&nbsp;&nbsp;&nbsp;&nbsp;label</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">show();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;app.exec();<br>}<br></span></div>
QLabel是QT中的标签控件它具有控件的一般属性比如设置大小setBaseSite,设置对齐格式，当然也可以设置背景色或者图片-这都是通过QPalette调色板来实现的<br>需要说明的是QT中的控件文本可以使用Html语法的文本来操作具体如上。<br>那觉这个功能比较给力！<br>3.那么什么是QPalette?<br>QPalette负责控制控件状态的颜色组-注意是控件状态。<br>那么对一个控件每个状态的颜色都可以是不一样的咯<br>至于QPalette的详细功能和使用方法以后需要的时候再看吧<br>4.基本的信号链接使用例子<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QApplication</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QPushButton</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;QPushButton&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">button&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QPushButton(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Quit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;when&nbsp;click&nbsp;button,&nbsp;app&nbsp;exit.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QObject::connect(button,&nbsp;SIGNAL(clicked()),</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">app,&nbsp;SLOT(quit()));<br>&nbsp;&nbsp;&nbsp;&nbsp;button</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">show();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;app.exec();<br>}</span></div>
5.一个复杂点的例子<br><span style="COLOR: #000080">
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QApplication</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QHBoxLayout</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QSlider</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QSpinBox</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QIcon</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;QWidget</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;widget&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QWidget;<br>&nbsp;&nbsp;&nbsp;&nbsp;QIcon&nbsp;icon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">config.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setWindowIcon(icon);<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setWindowTitle(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Using&nbsp;QT</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;QSlider</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;slider&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QSlider(widget);<br>&nbsp;&nbsp;&nbsp;&nbsp;slider</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setRange(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;QSpinBox</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;spinbox&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QSpinBox(widget);<br>&nbsp;&nbsp;&nbsp;&nbsp;spinbox</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setRange(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">show();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;app.exec();<br>}</span></div>
</span>编译运行可以看出QWidget中默认的布局管理器是竖直向下排列的<br>在QT中可以通过setWindowIcon来设置窗体图标<br>通过setWindowTitle设置窗体标题<br>6.加上布局管理器和信号连接的话代码大致应该是这个样子<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QApplication</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QHBoxLayout</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QSlider</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QSpinBox</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">QIcon</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;QWidget</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;widget&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QWidget;<br>&nbsp;&nbsp;&nbsp;&nbsp;QIcon&nbsp;icon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">config.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setWindowIcon(icon);<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setWindowTitle(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Using&nbsp;QT</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;QSlider</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;slider&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QSlider(widget);<br>&nbsp;&nbsp;&nbsp;&nbsp;slider</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setRange(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;QSpinBox</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;spinbox&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QSpinBox(widget);<br>&nbsp;&nbsp;&nbsp;&nbsp;spinbox</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setRange(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;QHBoxLayout</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;layout&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;QHBoxLayout;<br>&nbsp;&nbsp;&nbsp;&nbsp;layout</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">addWidget(spinbox);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;adjust&nbsp;slider's&nbsp;direction</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;slider</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setOrientation(Qt::Horizontal);<br>&nbsp;&nbsp;&nbsp;&nbsp;layout</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">addWidget(slider);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;spinbox</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setValue(</span><span style="COLOR: #000000">28</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">!&nbsp;connect&nbsp;signals&nbsp;and&nbsp;slots</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QObject::connect(spinbox,&nbsp;SIGNAL(valueChanged(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)),slider,SLOT(setValue(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;QObject::connect(slider,SIGNAL(valueChanged(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)),spinbox,SLOT(setValue(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">setLayout(layout);<br>&nbsp;&nbsp;&nbsp;&nbsp;widget</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">show();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;app.exec();<br>}</span></div>
需要说明的是在这里QSlider,QPinBox控件是互动<br>编译程序并运行界面如下:<br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/gaimor/QT1.PNG" width=216 height=80><br>这是关于QT的第六篇笔记<br>总结下吧<br>QT功能还是很强大贴心的<br>比较容易上手<br>不过有2点我感觉不大舒服的地方是对这个变量命名格式有点不大喜欢<br>比如setValue我喜欢写成SetValue.<br>仅此而已<br>
<img src ="http://www.cppblog.com/gaimor/aggbug/141944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gaimor/" target="_blank">ccsdu2009</a> 2011-03-16 10:41 <a href="http://www.cppblog.com/gaimor/archive/2011/03/16/141944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>