使用带有Tkinter的after方法

时间:2017-02-22 14:11:01

标签: python python-2.7 tkinter

我在GUI中使用“after”方法时遇到了麻烦。 目标是创建一个循环,用给定的输入变量计算“流量”。 到目前为止,我没有设法让我的代码运行,文档在“之后”或此帖Tkinter only calls after_idle once

我的代码:

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”。任何人都知道如何让它运行?

1 个答案:

答案 0 :(得分:2)

after是所有tkinter小部件上都可用的方法。在您的具体情况下,self不是小部件,因此自然不会有这种方法。

您需要从现有小部件中调用after。例如,如果您最初使用以下内容创建GUI:

root = tk.Tk()

您稍后可以像这样致电after

root.after(...)