2017-02-22 1223 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