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.

  • Multiprocessing.Pool verarbeitet gesperrt zu einem einzigen Kern
  • Gaierror: [Errno 8] nodename noch servname zur Verfügung gestellt oder nicht bekannt (mit macOS Sierra)
  • Konvertieren eines dict-Objekts in eine verschachtelte Liste
  • Vergleich von #include und Verwenden von namespace std in C ++ mit import in Python
  • Erzeugen einer Liste von Listen mit benutzerdefinierten Wertbegrenzungen mit Hypothese
  • Brauchen Sie Hilfe bei der Suche nach einem Weg mit einem Satz, der eine Liste zurückgibt, die nur einmal in einer Weile immer noch die Reihenfolge aufbewahren?
  • 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 

  • Ändern Sie einen Feldwert innerhalb einer If-Anweisung in Odoo 8
  • Probleme bei der Installation von rpy2 auf win7 (R 2.12, Python 2.5)
  • Erstellen von leeren Tabellenkalkulationen in Google Drive mit Drive API (in Python)
  • Python nicht in der Lage, Datei mit nicht-englischen Zeichen in Pfad zu öffnen
  • Seltsames Verhalten in Python if Klausel [duplizieren]
  • Python: Gibt es einen Weg, um ein "partielles" Flächenplot mit Matplotlib zu zeichnen?
  • 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.