【发布时间】:2015-10-30 12:31:26
【问题描述】:
此代码基本上将 2 个用户输入作为字符串,然后使用它们形成 URL
运行此代码后,如果(if 或 elif)条件为 False,则 TK 窗口挂起(冻结),这是代码。
请有人帮忙。请看下面的代码。
#!/usr/bin/env python
from Tkinter import *
import requests, csv, time, json, tkFileDialog
from lxml import html, etree
from tkFileDialog import askopenfilename
def countdown(p,q):
i=p
j=q
k=0
while True:
if(j==-1):
j=59
i-=1
if(j > 9):
print "\r"+str(k)+str(i)+":"+str(j),
else:
print "\r"+str(k)+str(i)+":"+str(k)+str(j),
time.sleep(1)
j -= 1
if(i==0 and j==-1):
break
if(i==0 and j==-1):
print "\rGoodbye!"
time.sleep(1)
links = []
root = Tk()
root.geometry('300x130')
label1 = Label( root, text="Please Enter Search Term")
E1 = Entry(root, bd =5)
label2 = Label( root, text="Please enter City")
E2 = Entry(root, bd =5)
def quit(self):
self.root.destroy()
def getData():
a = 'try again'
global Search_string, City
Search_string = E1.get();
City = E2.get();
if Search_string == '':
print 'Please enter [mandatory field] Search Term - (%s)' % a
print 'Program will exit in 10 seconds'
countdown(0,10)
sys.exit()
elif City == '':
print 'Please enter [mandatory field] City also - (%s)' % a
print 'Program will exit in 10 seconds'
countdown(0,10)
sys.exit()
else:
print Search_string,'\n',City
root.destroy()
submit = Button(root, text ="Submit", command = getData)
label1.pack()
E1.pack()
label2.pack()
E2.pack()
submit.pack(side=BOTTOM)
mainloop()
Search_string = Search_string.replace(' ','+')
partial_link_1 = ("https://www.google.com/search?q=");partial_link_2 = '&num=10'
Tk().withdraw()
csvfile = tkFileDialog.asksaveasfile(mode='w', defaultextension=".csv")
i = 0
while i < 40:
url = partial_link_1+Search_string+'+'+'in'+'+'+City+partial_link_2+'&start='+str(i)
i+=10
links.append(url)
for i in links: print "Links = %r"%i
【问题讨论】:
-
root.mainloop()显示为除最后一行代码之外的任何内容是一个不好的信号。mainloop()之后什么都不会运行,直到应用程序被销毁。 -
您知道
Tk().withdraw()正在创建一个第二个 根窗口吗? -
从 (root.mainloop()) 中删除根或删除 Tk().withdraw() 都不能解决问题。 (If else) 条件 sys.exit() 中的某些内容,python shell 以退出代码 0 退出,但 Tk 窗口没有关闭
-
@ShekharSamanta:如果你打电话给
sys.exit(),窗口必须关闭。我认为您可能误解了您所看到的内容。当我运行您的代码时,输入搜索词和城市,它会提示我输入文件,然后程序退出,正如我所期望的那样。 -
@Bryan Oakley,感谢您测试代码,尝试将其中一个字段留空 Search_string 或 City ,然后单击 Submit ,它将退出 python shell,但 TK 窗口将保持不变并继续没有反应。
标签: python python-2.7 tkinter