#coding:gbk command属性只能接受可执行对象,比如:command=add ,如果函数需要参数的话,你不能想当然的是:command=add(1,2) ,这样程序运行就不会是你想像的那样。程序会在你按下“相加”按钮这前把a+b的结果打印出来,而在你按下按钮的时候却什么也没做,因为command=add才是将可执行对象“add”赋予了属性command,而command=add(1,2)是将函数调用add(1,2)的执行结果赋予了属性command,而函数add并没有反回值。但是应该怎样给command属性的可执行对象传递参数呢?很简单,程序修改如下: #coding:gbk 表达式lambda:add(1,2)反回一个匿名函数-一个可执行对象,而这个可执行对象执行的内容就是我们想要的 add(1,2)。 |
如何给Tkinter窗口小部件的command属性的可执行对象传递参数
在python中使用中文
#coding:gbk 运行结果如下: 下面是我从python documentation 中找到的资料 如果把上面的 #coding:gbk 改成 #coding:gb2312 程序运行就会出错,因为字符串a的最后一个字符是繁体字,其它都是简体中文。我们还可以使用Aliases里面的别名,比如 #coding:936 或 #coding:chinese(只能使用简体中文)。 以上只是我经过试验得出的结论,如果有错误欢迎指正。 |
晴 多云
制作Email Icon
2007-05-15 下午 09:54 打开上面的链接并在如上图中输入你的QQ号,就可以制作一个你的QQ的Email icon。你还可以输入其它的邮箱地址,下面是我做的几个Email icon: |
牵手
2004年6月9日晚,我第一次牵你的手,也是第一次牵女孩子的手。 也许是我不够勇敢,也许是我不够浪漫,不知道你为什么要离开我,请相信我是爱你的。 最爱你的人是我,否则我怎会如此难过,你能感觉到吗?玮。我不需要任何安慰,只要你能回到我的身边 |
父母的生日
爸妈只知道自己的农历生日,却从来不知道自己公历是哪一天出生的。今天在网易电子邮箱里面的个人助理“公历农历”工具里查到了,爸是公历1943年7月10日星期六(农历6月初9)出生,妈是公历1949年12月21日星期三(农历11月初2)出生。 |
超好笑的笑话(转贴)
美女作家请一风流编辑审稿。编辑斜看着美女笑曰:上半部较丰满,有两点很突出,可惜下半部有些毛躁,并有一个漏洞,水份太大。美女着急的问: 那怎么办? 编辑答曰: 日后再说!
中国足球队兵败后,“强力持久丸”厂商找了国家队一名队员L“X”做了一个广告。情节是:L“X”左手抱着一个足球,右手指着屏幕说:“谁能90多分钟不射?我能!”
|
希腊神话中金牛座的来历

有一天,天神宙斯在人间游荡,经过某个国家时,突然看见这个国家的公主非常美丽,让宙斯不知不觉中看得出了神,回到天上之后,仍然对这位美丽的公主念念不忘。
而在这个公主所属的国家中,有一座很大很漂亮的牧场,里面有多到数不清的牛群在吃草、嬉戏,公主时常会来到这个牧场与这群可爱的牛群一起玩耍。
就在一个风和日丽的早上,公主又依往例的出现在牧场,当她正在与牛群玩得不亦乐乎时,突然发现在牛群之中,有一只特别会唱歌的牛,它的歌声非常悦耳动听,有如天籁一般,吸引着公主不自觉的朝他走去。
公主一看到这只牛,马上无法自拔的就爱上了他。因为他不仅歌声完美,就连外表也一样好的没话说。正当公主慢慢靠在牛的身上与他一起忘情的唱歌时,这只牛突然背起了公主朝着天空飞去。
经过了很久的飞行,这只牛终於在一个美丽的土地上停了下来,然后摇身一变成为人,向公主表达其爱慕之意。原来这只牛就是天神宙斯的化身,因为天神宙斯无法抑制服对公主的日夜思念,决定来向公主表白。
美丽公主於是接受了宙斯的爱,两人一起回到天上生活。而宙斯为纪念那表白的地方,就以公主的名字欧罗芭做为那块土地的名字。那土地正是今天的欧州大陆。金牛座的神话故事,是十二个星座的碓一描绘爱情的故事,打破了一般人认为金牛座缺乏浪漫的错误印象。
用python下载邮件附件
import cStringIO
import email
import email.Header
import base64,osos.chdir('d:\\python')
#POP3取信
M = poplib.POP3('xxx.xxx.xxx)
M.user('xxxxxx')
M.pass_('xxxxxx')#打印有多少封信
numMessages = len(M.list()[1])
print 'num of messages', numMessages
for i in range(numMessages):
m = M.retr(i+1)
buf = cStringIO.StringIO()
for j in m[1]:
print >>buf, j
buf.seek(0)#解析信件内容
msg = email.message_from_file(buf)
for part in msg.walk():
contenttype = part.get('Content-Disposition')
filename=email.Header.decode_header(part.get_filename())
if filename and contenttype and contenttype[0:10]== 'attachment':
filename=os.path.basename(filename[0][0])
print contenttype[0:10],filename
f = open(filename,'wb')
f.write(part.get_payload(decode=True))
f.close()
M.quit()
print 'exit'
Tkinter模块的一个内部类_setit
Internal class. It wraps the command in the widget OptionMenu. __init__(self, var, value, callback=None) var是窗口小部件变量,value对应OptionMenu的一个选项,callback是当OptionMenu的一个选项被选中时执行的方法.callback可以不指定,不管怎样,当OptionMenu的选项被选中时相应的value的值会被放到var中. 上面是我看英文资料后的理解,不知道是否正确,请指教 |
Tkinter窗口的geometry方法
import Tkinter root=Tkinter.Tk() root.geometry("%dx%d+%d+%d" % (200,200,0,0)) root.mainloop() #这样就建立了一个大小为200x200,左上角在(0,0)处的窗口, #左上角是相对于父窗口. #Tkinter.Toplevel也有方法geometry,其它的我就不大清楚了. |
Tkinter Variable
trace(self, mode, callback) Define a trace callback for the variable. MODE is one of "r", "w", "u" for read, write, undefine. Return the name of the callback. >>>import Tkinter 第一个参数可以是"r", "w"或"u",分别代表读、写、未定义。第二个参数是一个回调函数。上面的例子是,如果一个窗口变量s被写入,就调用回调函数cc。 |
C语言三维魔方游戏源代码

#include
#include
#include
#include
//小方块的结构,包括小方块在x,y,z上的旋转角度,颜色数组下标,小方块的三维坐标。
struct rcube{
int xr;
int yr;
int zr;
int cl[6];
GLfloat x;
GLfloat y;
GLfloat z;
};
struct rcube rc[3][3][3];
struct rcube *temp[3][3];
//颜色数组
GLfloat color[6][3]={{1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},
{1.0,1.0,0.0},{1.0,0.0,1.0},{0.0,1.0,1.0}};
int tempc[3][3][6];
//有关旋转的一些变量
GLfloat xRot = 10.0f;
GLfloat yRot = 10.0f;
int rotateType=0;
int rotateOK=0;
int rotateRate=50;
int rotate=0;
///////////////////////////////////////////////////////////////////////////////
//画小方块
void drawcube(int cl[6])
{
glBegin(GL_QUADS);
//右面
glColor3fv(color[cl[0]]);
glVertex3f(0.14f,-0.14f,-0.14f);
glVertex3f(0.14f,0.14f,-0.14f);
glVertex3f(0.14f,0.14f,0.14f);
glVertex3f(0.14f,-0.14f,0.14f);
//左面
glColor3fv(color[cl[1]]);
glVertex3f(-0.14f,-0.14f,0.14f);
glVertex3f(-0.14f,0.14f,0.14f);
glVertex3f(-0.14f,0.14f,-0.14f);
glVertex3f(-0.14f,-0.14f,-0.14f);
//前面
glColor3fv(color[cl[2]]);
glVertex3f(-0.14f,0.14f,0.14f);
glVertex3f(-0.14f,-0.14f,0.14f);
glVertex3f(0.14f,-0.14f,0.14f);
glVertex3f(0.14f,0.14f,0.14f);
//后面
glColor3fv(color[cl[3]]);
glVertex3f(-0.14f,0.14f,-0.14f);
glVertex3f(0.14f,0.14f,-0.14f);
glVertex3f(0.14f,-0.14f,-0.14f);
glVertex3f(-0.14f,-0.14f,-0.14f);
//上面
glColor3fv(color[cl[4]]);
glVertex3f(-0.14f,0.14f,-0.14f);
glVertex3f(-0.14f,0.14f,0.14f);
glVertex3f(0.14f,0.14f,0.14f);
glVertex3f(0.14f,0.14f,-0.14f);
//下面
glColor3fv(color[cl[5]]);
glVertex3f(-0.14f,-0.14f,-0.14f);
glVertex3f(0.14f,-0.14f,-0.14f);
glVertex3f(0.14f,-0.14f,0.14f);
glVertex3f(-0.14f,-0.14f,0.14f);
glEnd();
glFlush();
}
//窗口刷新时被调用。
void RenderScene(void)
{
int i,j,k;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
//魔方在这显示
glPushMatrix();
glRotatef(rc[i][j][k].xr, 1.0f, 0.0f, 0.0f);
glRotatef(rc[i][j][k].zr, 0.0f, 0.0f, 1.0f);
glRotatef(rc[i][j][k].yr, 0.0f, 1.0f, 0.0f);
glTranslatef(rc[i][j][k].x,rc[i][j][k].y,rc[i][j][k].z);
drawcube(rc[i][j][k].cl);
glPopMatrix();
}
}
}
glPopMatrix();
glutSwapBuffers();
}
//初始化。
void SetupRC()
{
GLfloat x,y,z;
int i,j,k,l;
for(i=0,x=-0.3f;i<3;i++,x+=0.3f)
{
for(j=0,y=-0.3f;j<3;j++,y+=0.3f)
{
for(k=0,z=-0.3f;k<3;k++,z+=0.3f)
{
rc[i][j][k].x=x;rc[i][j][k].xr=0;
rc[i][j][k].y=y;rc[i][j][k].yr=0;
rc[i][j][k].z=z;rc[i][j][k].zr=0;
for(l=0;l<6;l++)
{
rc[i][j][k].cl[l]=l;
}
}
}
}
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
}
//选择转动的那一组小方块。
void elect(int type)
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
switch (type)
{
case 1:
temp[i][j]=&rc[0][i][j]; break;
case 2:
temp[i][j]=&rc[1][i][j]; break;
case 3:
temp[i][j]=&rc[2][i][j]; break;
case 4:
temp[i][j]=&rc[j][0][i]; break;
case 5:
temp[i][j]=&rc[j][1][i]; break;
case 6:
temp[i][j]=&rc[j][2][i]; break;
case 7:
temp[i][j]=&rc[i][j][0]; break;
case 8:
temp[i][j]=&rc[i][j][1]; break;
case 9:
temp[i][j]=&rc[i][j][2]; break;
}
}
}
}
//判断是否胜利。
int win(void)
{
int i,j,k,c,cl[6];
for(k=0;k<6;k++)
{
cl[k]=rc[0][0][0].cl[k];
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
for(c=0;c<6;c++)
{
if(rc[i][j][k].cl[c]!=cl[c])
return 0;
}
}
}
}
return 1;
}
//转动小方块,实际上是交换颜色。
void shift(void)
{
int i,j,k,c;
elect(rotateType);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
(*temp[i][j]).xr=0;
(*temp[i][j]).yr=0;
(*temp[i][j]).zr=0;
if(rotateType>0&&rotateType<=3)
{
c=(*temp[i][j]).cl[2];
(*temp[i][j]).cl[2]=(*temp[i][j]).cl[4];
(*temp[i][j]).cl[4]=(*temp[i][j]).cl[3];
(*temp[i][j]).cl[3]=(*temp[i][j]).cl[5];
(*temp[i][j]).cl[5]=c;
}
if(rotateType>3&&rotateType<=6)
{
c=(*temp[i][j]).cl[0];
(*temp[i][j]).cl[0]=(*temp[i][j]).cl[2];
(*temp[i][j]).cl[2]=(*temp[i][j]).cl[1];
(*temp[i][j]).cl[1]=(*temp[i][j]).cl[3];
(*temp[i][j]).cl[3]=c;
}
if(rotateType>6&&rotateType<=9)
{
c=(*temp[i][j]).cl[4];
(*temp[i][j]).cl[4]=(*temp[i][j]).cl[0];
(*temp[i][j]).cl[0]=(*temp[i][j]).cl[5];
(*temp[i][j]).cl[5]=(*temp[i][j]).cl[1];
(*temp[i][j]).cl[1]=c;
}
for(k=0;k<6;k++)
{
tempc[2-j][i][k]=(*temp[i][j]).cl[k];
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<6;k++)
{
(*temp[i][j]).cl[k]=tempc[i][j][k];
}
}
}
//如果完成将背景色设成黑色,否则设成灰色。
if(win()==1)
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
else
glClearColor(0.5f, 0.5f, 0.5f, 1.0f );
}
//转动魔方,也就是改变小方块在x,y,z上的旋转角度。
void turn (void)
{
int j,k;
elect(rotateType);
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(rotateType>0&&rotateType<=3)
(*temp[j][k]).xr+=10;
if(rotateType>3&&rotateType<=6)
(*temp[j][k]).yr+=10;
if(rotateType>6&&rotateType<=9)
(*temp[j][k]).zr+=10;
}
}
}
//定时器回调函数,当魔方转动时产生动画。
void TimerFunc(int value)
{
rotate+=10;
turn();
glutPostRedisplay();
if(rotate==90)
{
shift();
rotate=0;
rotateOK=0;
rotateType=0;
return;
}
glutTimerFunc(rotateRate,TimerFunc,1);
}
//接收键盘输入。
void SpecialKeys(int key, int x, int y)
{
int temp=0;
switch (key)
{
case GLUT_KEY_F1:
temp=1; break;
case GLUT_KEY_F2:
temp=2; break;
case GLUT_KEY_F3:
temp=3; break;
case GLUT_KEY_F4:
temp=4; break;
case GLUT_KEY_F5:
temp=5; break;
case GLUT_KEY_F6:
temp=6; break;
case GLUT_KEY_F7:
temp=7; break;
case GLUT_KEY_F8:
temp=8; break;
case GLUT_KEY_F9:
temp=9; break;
case GLUT_KEY_UP:
xRot -= 5.0f; break;
case GLUT_KEY_DOWN:
xRot += 5.0f; break;
case GLUT_KEY_LEFT:
yRot -= 5.0f; break;
case GLUT_KEY_RIGHT:
yRot += 5.0f; break;
}
if ( rotateOK==0 && temp!=0)
{
rotateType=temp;
rotateOK=1;
glutTimerFunc(rotateRate,TimerFunc,1);
}
else temp=0;
if(xRot > 356.0f) xRot = 0.0f;
if(xRot < -1.0f) xRot = 355.0f;
if(yRot > 356.0f) yRot = 0.0f;
if(yRot < -1.0f) yRot = 355.0f;
glutPostRedisplay();
}
//当窗口改变尺寸时被调用。
void ChangeSize(int w, int h)
{
GLfloat nRange = 1.9f;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
else
glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
//主函数。
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutReshapeFunc(ChangeSize);
glutSpecialFunc(SpecialKeys);
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
return 0;
}
希望百度博客能保持简洁
不过希望能在细节上做的更人性化和完善些,比如用户自己能设定文章的写作日期,这样如果有用户想把博客搬到百度来的话,用户以前写的文章或日记的日期就能保留,就不会因为博客搬家而使的所有的文章或日记的写作日期是同一天。我想这是很有用的一个功能。
还有,希望不要在用户的博客上放太多不是用户需要的东西。