2009年11月17日星期二

Windows7のインストール説明

1.DVDをパソコンのドライバに入れて、自動的にインストール画面を出て来る。「今すぐインストール」をクリークして。




2.インターネットに接続して更新プログラム取得。


3.条項を同意して、「次へ」をクリークして次の画面出る


4.「新規インストール」を選択して、


5.インストール場所を選択して、「次へ」クリークとファイルをコピする。これから画面の説明に従って、インストール完了までしばらく待ちます。その期間何回のパソコン起動するはずです。

2009年11月12日星期四

显示wxStaticBitmap的窗口

转载来源:金庆的专栏
import wx

app = wx.App()
fmMain = wx.Frame(parent=None)
# If no panel, the bitmap will be incorrect on resizing.
# pnl = wx.Panel(fmMain)
bm = wx.Bitmap('test.jpg', wx.BITMAP_TYPE_ANY)
wx.StaticBitmap(fmMain, -1, bm)
fmMain.Show()
app.MainLoop()

如果不创建wxPanel,只创建wxStaticBitmap,窗口大小变化时,图片显示会不正常,并且指定图片位置和大小无效。

wxStaticBitmap的父窗口是fmMain或pnl都可以。

转自别人的博客,具体为什么我也说不清,知道的朋友请指教!

2009年11月9日星期一

代码顺序带来的问题,wxpython sizer 使用体验

昨天测试了一段代码,是关于notebook,和sizer运用的。代码如下:

import wx

#----------------------------------------------------------------------
class MyTabbedDlg(wx.Dialog):
def __init__(self, parent):
title = "Resize the dialog and see how controls adapt!"
wx.Dialog.__init__(self, parent, -1, title,
style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)

notebook = wx.Notebook(self, -1, size=(450,300))
panel1 = wx.Panel(notebook)
panel2 = wx.Panel(notebook)

notebook.AddPage(panel1, "Panel 1")
notebook.AddPage(panel2, "Panel 2")

dialog_sizer = wx.BoxSizer(wx.VERTICAL)
dialog_sizer.Add(notebook, 1, wx.EXPAND|wx.ALL, 5)

panel1_sizer = wx.BoxSizer(wx.VERTICAL)
text = wx.TextCtrl(panel1, -1, "Hi!", size=(400,90), style=wx.TE_MULTILINE)
button1 = wx.Button(panel1, -1, "I only resize horizontally...")
panel1_sizer.Add(text, 1, wx.EXPAND|wx.ALL, 10)
panel1_sizer.Add(button1, 0, wx.EXPAND|wx.ALL, 10)
panel1.SetSizer(panel1_sizer)

panel2_sizer = wx.BoxSizer(wx.HORIZONTAL)
button2 = wx.Button(panel2, -1, "I resize vertically")
button3 = wx.Button(panel2, -1, "I don't like resizing!")
panel2_sizer.Add(button2, 0, wx.EXPAND|wx.ALL, 20)
panel2_sizer.Add(button3, 0, wx.ALL, 100)
panel2.SetSizer(panel2_sizer)



if "__WXMAC__" in wx.PlatformInfo:
self.SetSizer(dialog_sizer)
else:
self.SetSizerAndFit(dialog_sizer)
self.Centre()

self.Bind(wx.EVT_BUTTON, self.OnButton)


def OnButton(self, evt):
self.EndModal(0)


#----------------------------------------------------------------------
class MyApp(wx.App):
def OnInit(self):
dlg = MyTabbedDlg(None)
dlg.ShowModal()
dlg.Destroy()
return True

myapp = MyApp(redirect=False)
myapp.MainLoop()


运行后没有提示错误,就是panel1上的一个按钮,没有显示,panel2 的两个按钮重叠到一块了,
如图所示:
用鼠标拖拽改变窗口大小后,问题就消失了,按钮安装设定的位置出现了。
起初怀疑是sizer没有写好,可是按照教程上的例子比较了没有发现错误,实在是不知所以然。

今天无意中把

notebook.AddPage(panel1, "Panel 1")
notebook.AddPage(panel2, "Panel 2")

这两句移到按钮定义语句之后,问题就解决了。

2009年7月26日星期日

返回页面顶部的简单jsp代码实现

下面举两个简单的文字、图片效果
1.文字实现,在相应位置放上就好
href="javascript:scroll(0,0)">返回顶部
文字的演示:http://www.wdsxp.com/bbs 找到最下面TOP字样

2.图片实现,也就是把按纽换成图片
a href="javascript:scroll(0,0)"img src="template%5B%27images/footer.gif" border="0" height="28" width="190"
把图片换成自己的,记得修改宽高

2009年7月25日星期六

一劳永逸的翻墙方式

zhh:下文提供了一种翻墙方式。其中可以变通的步骤,包括代理的工具和浏览的工具。

也可以用putty的工具plink.exe 下载地址:
http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe
再在命令行下执行
PLINK.EXE -C -N -D 127.0.0.1:7070 user@address.com
linux下可以用
ssh -CfNg -D 127.0.0.1:7070 user@address.com
其中user是发邮件后所回邮件分配的用户,address.com是邮件分配的地址。执行命令后需要输入密码,正确输入后,不再有任何提示。
保持该窗口不要关闭。在IE的选项里,连接,局域网设置里设置socks为127.0.0.1,端口7070,测试一下是否能正常上网,并找一家ip.cn, ip138.com这样的网站测一下自己的公网IP,看是否变为美国。
该法同时可用于QQ,msn的穿墙。

本文将提供一种一劳永逸的翻墙方式(ssh -D),实施之后,那道墙——对你来说——将从此透明。

本文面向的用户:使用Windows作为操作系统并且使用Firefox作为常用浏览器。

第一步:免费获取拥有SSH权限的帐号和密码。

默认的免费获取方式:将本文转载到你自己的博客上,将转载后的文章网址发送到f.ckgfw#gmail.com

转载方式:拷贝文章代码至博客后台HTML编辑器中,直接发布即可,文章标题自拟,可在前后文插入自己的评论。

经过人工审核,你将收到一封附有五个拥有SSH权限的帐号和密码的电子邮件,你可以将它们赠与你自己的读者。

更多获取方式将在今后陆续激活,请关注我们的最新更新:https://friendfeed.com/fuckgfw

第二步:配置MyEntunnel软件

下载并安装MyEntunnel,该软件全名为My Encrypted Tunnel。

一键下载:https://dl.getdropbox.com/u/873345/download/myentunnel.exe

myentunnel

按照上图将第一步收到的帐号信息填写到相应的地方后,点击save按钮,再点击hide按钮。

第一次连接过程中会出现一个认证对话框,按照提示确认即可。以后的自动连接中将不再出现此认证对话框。

最后点击hide按钮,使对话框隐藏到系统任务栏中。

提示:

为MyEntunnel创建一个快捷方式,将其复制到系统的【启动】(C:\Documents and Settings\当前用户名(需要修改成你自己的)\「开始」菜单\程序\启动)文件夹中,今后开机便可自动启动软件,并自动连接服务器。

tray

绿色代表连接成功且稳定;黄色代表正在连接或重新连接;红色代表连接失败。

第三步:配置Firefox浏览器

假设你正使用Firefox浏览器阅读本文。

一键安装:http://autoproxy.mozdev.org/latest.xpi

xpi-offical

点击立即安装,安装后,重新启动Firefox。然后你会看到如下对话框,选择gfwlist (P.R.China)后,点击确定。

gfwlist

接着你会看到Firefox主界面右上角出现有一个“福”字图案,点击“福”。

fu

点击“代理服务器——编辑代理服务器”。

edit

随即出现如下画面,你会看到如GAppProxy、Tor和Your Freedom这样一系列代理服务器名称。

before

将GAppProxy一栏的参数修改为如下图所示。

after

修改完毕后,点击确定。至此配置已全部就绪。

获取更多帮助,请关注反馈中心:https://friendfeed.com/fuckgfw-feedbackBernie:

第四步:支持fuckGFW

获取详情,请关注捐赠与推广中心:https://friendfeed.com/fuckgfw-donation-and-marketing

版权信息:您可以自由复制、传播、演绎本作品且无需署名、无需注明原始出处。

2009年7月23日星期四

如何让python交互模式也能使用Tab键补全输入

别人的问题,自己做个收藏。
http://groups.google.com/group/python-cn/browse_thread/thread/272baca043c169fd?hl=zh-CN

牛人的回答:

交互模式使用 python 建议使用 ipython,
执行

> sudo apt-get install ipython

安装。

不过 python 命令行其实也是支持补全的,
在python 后先执行一句

> import readline, rlcompleter; readline.parse_and_bind(*"tab: complete"*)

然后就可以按 *Tab 补全*了。

在我这儿,我是让 python 命令行交互模式自动执行那语句,

即在* ~/.pythonstartup.py* 写入

> #!/usr/bin/python
> # -*- coding: UTF-8 -*-

> import readline, rlcompleter; readline.parse_and_bind("tab: complete") #
> 启用Tab补全

> def igtk():
> #import gtk, thread ; gtk.gdk.threads_init() ;
> thread.start_new_thread(gtk.main, ()) # 启用 Gtk 线程支持
> globals()['gtk'] = __import__('gtk')
> globals()['thread'] = __import__('thread')
> gtk.gdk.threads_init()
> thread.start_new_thread(gtk.main, ())
> pass

然后添加环境变量 PYTHONSTARTUP=~/.pythonstartup.py ,
即在 *~/.bashrc* 末尾加一行
> export PYTHONSTARTUP=~/.pythonstartup.py

以后执行 python 命令进入交互模式,就直接可以* Tab 补全*了。

上边例子还有个 igtk() 函数,
是用于命令行测试 PyGtk 使用的,
进入 Python 交互模式执行 igtk() 即可直接测试 Gtk 代码。

2009年6月30日星期二

转贴一个利用sizer的参考代码

原帖地址:http://wxforum.shadonet.com/viewtopic.php?t=24064



实现如图的layout :

//create sizer
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);

// top
pPanelTop = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(320, 60) );
wxColour color(_T("#FDFDFD"));
pPanelTop->SetBackgroundColour(color);

sizer->Add(pPanelTop, 0, wxALIGN_TOP wxEXPAND, 0);

// center
pPanelCenter = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(300, 400) );
wxColour black_color(_T("BLACK"));
pPanelCenter->SetBackgroundColour(black_color);

pPanelLeft = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(10, 100) );
pPanelRight = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(10, 100) );
pPanelLeft->SetBackgroundColour(color);
pPanelRight->SetBackgroundColour(color);

wxBoxSizer *center_sizer = new wxBoxSizer(wxHORIZONTAL);
center_sizer->Add(pPanelLeft, 0, wxEXPAND, 0);
center_sizer->Add(pPanelCenter, 1, wxEXPAND, 0);
center_sizer->Add(pPanelRight, 0, wxEXPAND, 0);

// bottom
pPanelBottom = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(100, 10) );
pPanelBottom->SetBackgroundColour(color);

sizer->Add(center_sizer, 1, wxEXPAND, 0);
sizer->Add(pPanelBottom, 0, wxALIGN_BOTTOM wxEXPAND, 0);

sizer->SetSizeHints(this);
SetSizer(sizer);

2009年6月25日星期四

Python视频教程--(设置环境变量)Adding Python to DOS Path

自己作为一个PYthon的初学者,更能够理解一些初学者的迷惑的心情,和渴望有一个高手能给自己演示操作一下。这样或许能帮助我们更好的理解某些书面文字,今天上网搜到一个视频教程网,虽然是英文的但有些操作是可以看的,所以推荐给网友看看。

直接点击下面网址,进入网站在线观看。

视频所在网址: 'Adding Python to DOS Path'
at ShowMeDo from the Python category.

2009年6月24日星期三

wxpython学习心得

今天调试自己的一个代码,发现在自己电脑上可以通过,转到单位电脑上就报错“NameError: global name 'INB_FIT_LABELTEXT' is not defined”,真的很奇怪,最后发现我个人电脑装的是wxpython 最新版本wxPython2.8-win32-unicode-2.8.10.1-py25,而单位的是wxPython2.8-win32-unicode-2.8.9.2-py25,我把单位电脑的wxpython升级之后,问题迎刃而解了。

看来wxPython2.8-win32-unicode-2.8.9.2-py25里没有定义INB_FIT_LABELTEXT这个style。

推荐一款性能可比Windows优化大师的多国语言版系统优化软件

最近发现一款比较不错的免费的系统优化软件,Glary Utilities。
最大的特点是可以支持多国语言,可以装在日文,英文,中文等多个系统。
下载地址是http://www.glaryutilities.com/gu.html?tag=download

wxpython demo labelbook学习心得

今天终于完成了一个自己第一个代码的完善工作--一个wxpython的demo labelbook的学习代码。
作为纪念想把代码写入博客,也算是给网友一个分享吧。
再此也要感谢python-cn`CPyUG`华蟒用户组(中文Py用户组)中一个叫汪文进的网友,他给了我很大的帮助使得我能够顺利完成。
程序代码如下:
import wx
import wx.lib.colourselect as csel
import os
import sys


try:
dirName = os.path.dirname(os.path.abspath(__file__))
except:
dirName = os.path.dirname(os.path.abspath(sys.argv[0]))

bitmapDir = os.path.join(dirName, 'images')
sys.path.append(os.path.split(dirName)[0])

try:
from agw import labelbook as LB
from agw.fmresources import *
except ImportError: # if it's not there locally, try the wxPython lib.
import wx.lib.agw.labelbook as LB
from wx.lib.agw.fmresources import *

#import images
_pageTexts = ["Hello", "From", "wxPython", "LabelBook", "Demo"]
#_pageIcons = []
_pageIcons = ["roll.png", "charge.png", "add.png", "decrypted.png", "news.png"]

#_pageIcons = ["icon-equiv.png","icon-minimiz.png","icon-product.png","icon-setup.png","product4x.png"]
_pageColours = [wx.RED, wx.GREEN, wx.WHITE, wx.BLUE, "Pink"]

class LabelBook(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.mainpanel = wx.Panel(self, -1)

self.SetProperties()
self.CreateLabelBook()
self.DoLayout()

self.SetSize((600,500))

#self.SetIcon(images.Mondrian.GetIcon())
self.CenterOnScreen()

#self.initializing = False
self.SendSizeEvent()

def SetProperties(self):

self.SetTitle("The success labelbook!-)")


def DoLayout(self):
mainsizer = wx.BoxSizer(wx.VERTICAL)
panelsizer = wx.BoxSizer(wx.VERTICAL)

panelsizer.Add(self.book, 1, wx.EXPAND, 0)
self.mainpanel.SetSizer(panelsizer)
panelsizer.Layout()

mainsizer.Add(self.mainpanel, 1, wx.EXPAND, 0)

self.SetSizer(mainsizer)
mainsizer.Layout()
self.Layout()

def CreateLabelBook(self):
style = self.GetBookStyles()

self.book = LB.LabelBook(self.mainpanel, -1,style=style)
#self.book = LB.FlatImageBook(self.mainpanel, -1, style=style)

self.imagelist = self.CreateImageList()
self.book.AssignImageList(self.imagelist)
#self.Refresh()

for indx, txts in enumerate(_pageTexts):
#label = "This is panel number %d"%(indx+1)
self.book.AddPage(TestPanel(self.book,_pageColours[indx]),
txts, True, indx)

self.book.SetSelection(0)
#self.book.SetWindowStyleFlag(style=LB.INB_FIT_BUTTON)

self.SendSizeEvent()

def GetBookStyles(self):
style = INB_FIT_BUTTON

style |= LB.INB_FIT_LABELTEXT
#style |= INB_WEB_HILITE
style |= INB_USE_PIN_BUTTON
#style |= INB_BORDER
#style |= LB.INB_SHOW_ONLY_TEXT #only used in FlatImageBook type

style = self.GetBookOrientation(style)

return style


def CreateImageList(self):

imagelist = wx.ImageList(32, 32)
for img in _pageIcons:
newImg = os.path.join(bitmapDir, "lb%s"%img)
bmp = wx.Bitmap(newImg, wx.BITMAP_TYPE_PNG)
imagelist.Add(bmp)

#bmp = imagebmp.GetBitmap()
#for i in range(5):
# imagelist.Add(bmp)

return imagelist

def GetBookOrientation(self, style):

style |= INB_LEFT
#style |= INB_RIGHT
#style |= LB.INB_TOP #only used in FlatImageBook type
#style |= INB_BOTTOM #only used in FlatImageBook type

return style

#---------------------------------------------------------------------------
class TestPanel(wx.Panel):
def __init__(self, parent,colour):
#self.log = log
wx.Panel.__init__(self, parent, -1)

st = wx.StaticText(self, -1,
"You can put nearly any type of window here,\n"
"and if the platform supports it then the\n"
"tabs can be on any side of the notebook.",
(10, 10))

b = wx.Button(self, -1, " Test LabelBook And FlatImageBook ", (100,100))


self.Bind(wx.EVT_BUTTON, self.OnButton, b)
self.SetBackgroundColour(colour)

def OnButton(self, evt):
msg= "this is a botton!"
dlg = wx.MessageDialog(self,msg,"this my test",wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()

if __name__ == '__main__':
app = wx.PySimpleApp()
frame = LabelBook(None)
frame.Show()
app.MainLoop()