2017-02-22 156 views
0

我在使用GUI中的「after」方法時遇到了麻煩。 目標是創建一個循環,用給定的輸入變量計算「流量」。 到目前爲止,我沒把我的代碼的運行,與「之後」上的文檔,或者這個帖子Tkinter only calls after_idle once對Tkinter使用after方法

我的代碼:

import Tkinter as tk 
from Tkinter import * 
import ttk 
import tkMessageBox 

class Regeln(): 
    def __init__(self): 
     bla=1 
    def lesen(self,faktor,stromdichte,flaeche,anzahl,elektronen,konzentration): 
     self.faktor=faktor 
     self.stromdichte=stromdichte 
     self.flaeche=flaeche 
     self.anzahl=anzahl 
     self.elektronen=elektronen 
     self.konzentration=konzentration 
     try: 
      self.faktor=float(self.faktor) 
      self.stromdichte=float(self.stromdichte) 
      self.flaeche=float(self.flaeche) 
      self.anzahl=float(self.anzahl) 
      self.elektronen=float(self.elektronen) 
      self.konzentration=float(self.konzentration) 
     except: 
      tkMessageBox.showerror("Achtung!","Nur Zahlen eingeben!") 
     try: 
      1/(self.faktor*self.stromdichte*self.flaeche*self.anzahl*self.elektronen*self.konzentration)   
     except: 
      tkMessageBox.showerror("Achtung!","Nur Werte größer 0 eingeben!") 
     self.algorithmus() 

    def algorithmus(self): 
     flow=self.faktor*self.stromdichte*self.elektronen*60/(96485.34*self.konzentration*0.75/100)*self.flaeche*self.anzahl/1000 
     print flow 

     self.after(1500,self.algorithmus) 

有了這個,我得到一個「AttributeError的」。任何人有任何想法如何讓它運行?

回答

2

after是一種可用於所有tkinter小部件的方法。在你的具體情況下,self不是一個部件,所以自然不會有這種方法。

您需要從現有的窗口小部件調用after。例如,如果您最初像這樣的東西創建了GUI:

root = tk.Tk() 

你可以再打after這樣的:

root.after(...) 
+0

謝謝'root.after(...)'是正確的提示。該算法現在正在工作。 – Sebastian