|
|
|
|
 [精华] 请教高手! - icgre [ 2005-11-15 11:07 | 5,130 byte(s)]
 [精华] Re: 请教高手! - icgre [ 2005-11-15 14:18 | 4,455 byte(s)]
 Re: 请教高手! - limodou [ 2005-11-15 18:01 | 216 byte(s)]
 Re: 请教高手! - icgre [ 2005-11-16 14:45 | 756 byte(s)]
 Re: 请教高手! - limodou [ 2005-11-16 20:28 | 202 byte(s)]
 Re: 请教高手! - passworld [ 2005-11-17 00:57 | 80 byte(s)]
 Re: 请教高手! - icgre [ 2005-11-17 09:10 | 165 byte(s)]
 Re: 请教高手! - limodou [ 2005-11-17 09:46 | 75 byte(s)]
 [精华] Re: 请教高手! - limodou [ 2005-11-15 13:32 | 114 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
我写了一段代码!但是一进入界面,数据库连接就直接运行,
那位高手知道如何解决啊!让点击按钮后再运行怎么处理啊!
##################writed by icgre######################
import dbi, odbc
from Tkinter import *
import pymqi, CMQC, sys, os, string,sys
from init import initdata
from time import strftime,sleep
class panel(Frame):
def __init__(self,initlabel=""):
Frame.__init__(self)
self.pack(expand=YES,fill=BOTH)
self.master.title="Message pass managerV1.0"
self.master.geometry("800x300")
self.source=StringVar()
self.text1=Entry(self,name="text1",textvariable=self.source)
self.source.set("")
self.text1.bind("<Return>",self.action)
self.text1.pack()
self.labelvalue=StringVar()
self.label1=Label(self,textvariable=self.labelvalue)
self.labelvalue.set(initlabel)
self.label1.pack()
self.button1=Button(self,text="O k",command=self.queding)
self.button1.pack()
self.button2=Button(self,text="Cancel",command=self.quxiao)
self.button2.pack()
try:
odbcname=initdata().odbcname
user=initdata().user
password=initdata().password
except:
self.labelvalue.set("Error the init.py is not correct!")
try:
dbc = odbc.odbc(odbcname+"/"+user+"/"+password)
except:
self.labelvalue.set("Error the database link is not correct!")
sql="select convert(varchar,order_name),button_name,sql from change_table"
crsr = dbc.cursor()
crsr.execute(sql)
result = crsr.fetchall()
for i in result:
self.button3=Button(self,text=i[1])
self.button3.bind("<Enter>",self.link(i[0]))
self.button3.pack()
def link(self,order_id):
odbcname=initdata().odbcname
user=initdata().user
password=initdata().password
dbc = odbc.odbc(odbcname+"/"+user+"/"+password)
sql="select * from change_table where order_name="+order_id
crsr = dbc.cursor()
crsr.execute(sql)
result = crsr.fetchall()
sql1=result[0][2]
crsr = dbc.cursor()
crsr.execute(sql1)
result1 = crsr.fetchall()
for i in result1:
str=""
for s in range(len(crsr.description)):
str=str+i[s]+"@"
self.putmessage(initdata().channel,initdata().host,initdata().port,initdata().quemgr,i
nitdata().queue,str)
def putmessage(self,channel,host,port,quemgr,queue,message):
arg_array_size=len(message)
host=host.upper()
quemgr=quemgr.upper()
queue=queue.upper()
command=channel+"/TCP/"+host+"("+port+")"
os.environ['MQSERVER'] =command
os.environ['CCSID'] ="1381"
qmgr = pymqi.QueueManager()
putQ= pymqi.Queue(qmgr,queue)
counter=0
while counter < arg_array_size:
putQ.put(message[counter])
print "Sent Message :",message[counter]
counter = counter +1
def action(self,event):
print "212112"
def queding(self):
source=self.source.get()
if len(source)<>0:
self.putmessage(initdata().channel,initdata().host,initdata().port,initdata().quemgr,i
nitdata().queue,source)
labelvalue="putmessage '"+source+"' successfully! time
is:"+strftime("%Y%m%d%H%M%S")+"
"
self.labelvalue.set(labelvalue)
string1="j"
filepath=sys.prefix+string1[0]+"putmessage.log"
file=open(filepath,'a')
file.write("putmessage '"+source+"' successfully! time
is:"+strftime("%Y%m%d%H%M%S")+"
")
file.close()
else:
labelvalue="please input the message! time is:"+strftime("%Y%m%d%H%M%S")+"
"
self.labelvalue.set(labelvalue)
string1="j"
filepath=sys.prefix+string1[0]+"putmessage.log"
file=open(filepath,'a')
file.write("Error! The Message Is Null! time is:"+strftime("%Y%m%d%H%M%S")+"
")
file.close()
def quxiao(self):
self.source.set('')
if __name__=="__main__":
panel().mainloop()
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
我把它放到事件中还是不行啊!
如下:
############################writed by icgre#############################
import dbi, odbc
from Tkinter import *
import pymqi, CMQC, sys, os, string,sys
from init import initdata
from time import strftime,sleep
class panel(Frame):
def __init__(self,initlabel=""):
Frame.__init__(self)
self.pack(expand=YES,fill=BOTH)
self.master.title="Message pass managerV1.0"
self.master.geometry("800x300")
self.source=StringVar()
self.text1=Entry(self,name="text1",textvariable=self.source)
self.source.set("")
self.text1.bind("<Return>",self.action)
self.text1.pack()
self.labelvalue=StringVar()
self.label1=Label(self,textvariable=self.labelvalue)
self.labelvalue.set(initlabel)
self.label1.pack()
self.button1=Button(self,text="O k",command=self.queding)
self.button1.pack()
self.button2=Button(self,text="Cancel",command=self.quxiao)
self.button2.pack()
self.button3=Button(self,text='test me')
self.button3.bind("<Enter>",self.link('1'))
self.button3.pack()
def link(self,order_id):
odbcname=initdata().odbcname
user=initdata().user
password=initdata().password
dbc = odbc.odbc(odbcname+"/"+user+"/"+password)
sql="select * from change_table where order_name="+order_id
crsr = dbc.cursor()
crsr.execute(sql)
result = crsr.fetchall()
sql1=result[0][2]
crsr = dbc.cursor()
crsr.execute(sql1)
result1 = crsr.fetchall()
for i in result1:
str=""
for s in range(len(crsr.description)):
str=str+i[s]+"@"
self.putmessage(initdata().channel,initdata().host,initdata().port,initdata().quemgr,i
nitdata().queue,str)
def putmessage(self,channel,host,port,quemgr,queue,message):
arg_array_size=len(message)
host=host.upper()
quemgr=quemgr.upper()
queue=queue.upper()
command=channel+"/TCP/"+host+"("+port+")"
os.environ['MQSERVER'] =command
os.environ['CCSID'] ="1381"
qmgr = pymqi.QueueManager()
putQ= pymqi.Queue(qmgr,queue)
counter=0
while counter < arg_array_size:
putQ.put(message[counter])
print "Sent Message :",message[counter]
counter = counter +1
def action(self,event):
print "212112"
def queding(self):
source=self.source.get()
if len(source)<>0:
self.putmessage(initdata().channel,initdata().host,initdata().port,initdata().quemgr,i
nitdata().queue,source)
labelvalue="putmessage '"+source+"' successfully! time
is:"+strftime("%Y%m%d%H%M%S")+"
"
self.labelvalue.set(labelvalue)
string1="j"
filepath=sys.prefix+string1[0]+"putmessage.log"
file=open(filepath,'a')
file.write("putmessage '"+source+"' successfully! time
is:"+strftime("%Y%m%d%H%M%S")+"
")
file.close()
else:
labelvalue="please input the message! time is:"+strftime("%Y%m%d%H%M%S")+"
"
self.labelvalue.set(labelvalue)
string1="j"
filepath=sys.prefix+string1[0]+"putmessage.log"
file=open(filepath,'a')
file.write("Error! The Message Is Null! time is:"+strftime("%Y%m%d%H%M%S")+"
")
file.close()
def quxiao(self):
self.source.set('')
if __name__=="__main__":
panel().mainloop()
还是一进页面就执行!请指教!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
self.button3.bind("<Enter>",self.link('1'))
这行对事件的绑定不是,这是对self.link的一个调用,应该是:
self.button3.bind("<Enter>",self.link)
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
请问一下!如果我想用一个死循环来刷新页面的信息怎么做啊!比如
while 1:
print "1212"
time.sleep(10)
labelvalue=labelvalue+"2121221"
self.labelvalue.set(labelvalue)
来实现页面上label的页面变化!我原来想用点击按钮事件来实现!但是按钮一点就没反映了!因为陷入了死循环,所以不知如何结局!请高手指教如何完成这个功能!
另外您有没有两个py页面之间参数传递的例子啊!我不知道py能不能做到想web页面那样
通过<form name="form1" action="next_page">
<input type="hidden" name="canshu1" value="test">
</form>
来实现两个页面间参数的传递!请高手指教!最好有实例!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
那使用线程就可以了。但刷新时应该转到主线程上。tk不熟,在wxPython可以使用timer来做。
两个页面?是两个python程序吧。可以创建一个公共的模块,比如conf.py,两个都导入它,用它来传递就行了。
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
请问一下!现在用python编辑界面的,一般用什么工具!我是从参考书上,看到Tkinter的,因为它的资料好像很多的样子,所以就练习了一下!请高手推荐一两种python的界面工具好吗?
|
|
[Original]
[Print]
[Top]
|
|
|