Python Tk Fenster legt auf

Dieser Code nimmt grundsätzlich 2 Benutzereingaben als String & später an, um URL zu bilden

Nachdem ich diesen Code ausgeführt habe, legt das TK-Fenster auf (gefriert), wenn (wenn oder elif) Bedingung falsch ist, hier ist der Code.

  • Verwenden von DATEADD in sqlalchemy
  • Sende diese Anfrage mit Python httplib
  • Lesen Sie CSV mit extra Kommas und kein Quotechar mit Pandas?
  • Warum hat sich Python 3 geändert, um diesen Code zu brechen?
  • Python Raw Strings
  • Numpy NdArray Memoisierung
  • Jemand bitte helfen auf dem gleichen. Bitte siehe unten Code.

    #!/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 

  • Analysieren einer Datenmatrix mit HH: MM: SS.mmm mal mit numpy.loadtxt
  • Unterklassen von Python-Tupel mit mehreren __init__-Argumenten
  • Wie kann man Django Queryset erstellen, der Datensätze mit max Wert innerhalb einer Gruppe auswählt
  • GZIP-Komprimierung auf eine CSV in Python Pandas anwenden
  • Mongodb - sind Zuverlässigkeitsprobleme noch wichtig?
  • Melden Sie eine zweistufige KS-Statistik aus zwei vorberechneten Histogrammen
  • One Solution collect form web for “Python Tk Fenster legt auf”

    Die Art und Weise, wie tkinter (und die meisten GUI-Toolkits) arbeiten, ist, dass sie sich auf einen stetigen Strom von Ereignissen verlassen. Es gibt Maus- und Tastaturereignisse, aber es gibt auch Ereignisse für das Auffrischen der Anzeige und andere untergeordnete Funktionen.

    Wenn du in einer Schleife schlägst, kann die Ereignisschleife diese Ereignisse nicht verarbeiten, was deine GUI zum Einfrieren veranlasst.

    Wenn du einen Countdown-Timer präsentieren möchtest, ist eine Endlosschleife nicht der Weg, es zu tun. Tkinter Widgets haben eine Methode namens, after der Sie verwenden können, um eine Funktion zu planen, die in der Zukunft aufgerufen werden soll.

    Zum Beispiel können Sie eine Funktion nehmen, die eine Nummer akzeptiert. Wenn die Nummer null ist, wird sie beendet. Wenn es nicht Null ist, dekrementiert es die Zahl und veranlaßt sich dann wieder in einer Sekunde aufgerufen zu werden.

    Zum Beispiel könnte es so aussehen:

    Def-Countdown (Verzögerung): wenn Verzögerung == 0: sys.exit () print "Programm wird in% s Sekunden beendet"% delay root.after (1000, countdown, delay-1)

    Wenn du es wie delay(10) nennst, wird es die delay(10) planen, um in einer Sekunde wieder aufgerufen zu werden, aber mit 9 als Argument. Es wird weiterhin den Wert dekrementieren, bis er auf Null trifft, an welchem ​​Punkt er beendet wird.

    Für weitere Informationen über die Verwendung after , hier ist ein paar gute Ressourcen:

    1. Tkinter: wie man nach der methode verwendet (stackoverflow)
    2. http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.after-method
    Python ist die beste Programmiersprache der Welt.