2017-02-01 1 views
0

Es gibt Zeilen in einer Textdatei, die ich in einem Tkinter-Fenster anzeigen möchte. Nachdem die Zeile angezeigt wird, verschwindet das Tkinter-Fenster, kehrt wieder zurück und zeigt die nächste Zeile in der Datei an, die Fenster verschwinden und wiederholen den Vorgang erneut, bis das Skript gestoppt wird.Eine Datei durchlaufen und jede Zeile in einem Fenster anzeigen, nachdem das vorhergehende Fenster geschlossen wurde?

Bisher das Skript schrieb ich zeigt alle Zeilen in der Datei zur gleichen Zeit verschwindet und erscheint wieder, wiederholt den gleichen Prozess, bis das Skript ist stopped.Here der Code:

import Tkinter as Tk 
import time 

class Window: 
    def __init__(self): 
     self.root = None 
     self.hide = 10 #minutes 
     self.show = 10 #seconds 

    def close(self): 
     self.root.destroy() 
     return 

    def new(self): 
     fh=open('subliminal.txt') 
     lines = fh.read().splitlines() 
     self.root = Tk.Tk() 
     for line in lines: 
     Tk.Button(self.root, text= line, command='callback').pack() 
     self.root.after(self.show*1000, self.loop) 

    def loop(self): 
     if self.root: 
      self.root.destroy() 
     time.sleep(self.hide) 
     self.new() 
     self.root.mainloop() 
     return 

Window().loop() 

Dieses Skript ist in Python 2 geschrieben, aber ich bin auch offen dafür, dies in einer anderen GUI zu tun, da es leicht ist.

Danke, das für mich gearbeitet:

import Tkinter as Tk 
import time 

class Window: 
    def __init__(self): 
     self.root = None 
     self.hide = 10 #minutes 
     self.show = 10 #seconds 

    def close(self): 
     self.root.destroy() 
     return 

    def new(self): 
     fh=open('subliminal.txt') 
     lines = fh.read().splitlines() 
     for line in lines: 
      self.root = Tk.Tk() 
      Tk.Button(self.root, text= line, command='callback').pack() 
      self.root.update() 
      time.sleep(5) 

      self.root.destroy() 

    def loop(self): 

     self.new() 
     self.root.mainloop() 
     self.loop() 
     return 

Window().loop() 
+0

bin auch offen dafür in python3 zu tun –

Antwort

0

Ich glaube, das sein kann, was Sie suchen:

import tkinter as Tk 
import time 

class Window: 
    def __init__(self): 
     self.root = None 
     self.hide = 10 #minutes 
     self.show = 10 #seconds 

    def close(self): 
     self.root.destroy() 
     return 

    def new(self): 
     fh=open('subliminal.txt') 
     lines = fh.read().splitlines() 
     for line in lines: 
      self.root = Tk.Tk() 
      Tk.Button(self.root, text= line, command='callback').pack() 
      self.root.update() 
      time.sleep(5) 
      #self.root.mainloop() 
      self.root.destroy() 

    def loop(self): 
     #if self.root: 
      #self.root.destroy() 
     #time.sleep(self.hide) 
     self.new() 
     #self.root.mainloop() 
     return 

Window().loop() 

Wenn ich es laufen, ist es ein Fenster für 5 Sekunden mit der macht erste Zeile, dann ein neues Fenster mit der nächsten Zeile und so weiter. Möglicherweise möchten Sie eine Prüfung abschließen, da die Exit-Schaltfläche aufgrund der Verwendung von update() anstelle von mainloop() nicht funktioniert.

+0

Pls wie schließe ich eine enge Prüfung –

+0

Sie schon. – Steampunkery

Verwandte Themen