Chinaunix首页 | 论坛 | 博客
  • 博客访问: 926200
  • 博文数量: 177
  • 博客积分: 761
  • 博客等级: 上士
  • 技术积分: 1518
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-04 22:37
文章分类

全部博文(177)

文章存档

2017年(1)

2016年(3)

2015年(33)

2014年(48)

2013年(60)

2012年(32)

分类: Python/Ruby

2012-08-30 16:27:20

    刚接触python没多久,不免会弄出些奇怪的问题。今天在eric环境下调试python时发现在设置sys.argv[1]的参数
时莫名奇妙调试不过去,非得从sys.argv[2]起始才能解析参数。
1.参数若设置如下2开始在eric debug的时候F2运行如下界面
hours,mins = sys.argv[2].split(":")

2.在hours,mins = sys.argv[2].split(":")设置为1在F2的时候

3.在Konsole中运行的时候 python ui.py 16:32;hours,mins = sys.argv[1].split(":")

4.若改为hours,mins = sys.argv[2].split(":"),运行出错
xtramus@ubuntu:/usr/local/share/gnuradio/N210/UI$ python ui.py 16:32
Traceback (most recent call last):
  File "ui.py", line 18, in
    hours,mins = sys.argv[2].split(":")
IndexError: list index out of range
xtramus@ubuntu:/usr/local/share/gnuradio/N210/UI$

难道是eric的sys.argv的参数解析是从下标1开始的?

附代码
#!/usr/bin/env python
import sys
import time
from PyQt4.QtCore import (QTime, QTimer, Qt, SIGNAL)
from PyQt4.QtGui import (QApplication, QLabel)

app =QApplication(sys.argv)
print "sys.argv[0]%s\n"%sys.argv[0]
print "sys.argv[1]%s\n"%sys.argv[1]
print "sys.argv[2]%s\n"%sys.argv[2:]
try :
    due = QTime.currentTime()
    message = "Alert"
    if len(sys.argv) < 2:
        raise ValueError
    hours,mins = sys.argv[1].split(":")
    due = QTime(int(hours), int(mins))
    if not due.isValid():
        raise ValueError
    if len(sys.argv) > 2:
        message = " ".join(sys.argv[2:])
except ValueError:
    message = "Usage: alert.pyw HH:MM[optional message]"#24hr clock
while QTime.currentTime() < due:
    time.sleep(20)


label =QLabel("{0}" .format(message))
label.setWindowFlags(Qt.SplashScreen)
label.show()
QTimer.singleShot(20000, app.quit)
app.exec_()

阅读(4297) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

lubing5212012-08-30 16:45:44

#!/usr/bin/env python


import sys
import time
from PyQt4.QtCore import (QTime, QTimer, Qt, SIGNAL)
from PyQt4.QtGui import (QApplication, QLabel)

app =QApplication(sys.argv)
try :
    due = QTime.currentTime()
    message = "Alert"
    if len(sys.argv) < 2:
        raise ValueError
    hours,mins = sys.argv[1].split