2016-05-08 7 views
0

Also versuche ich einen einfachen Rechner zu bauen, der die Nummer pi ie, 3,14 in Label anzeigt und jedes Mal wenn der Button 'click me' geklickt wird Es fügt dem 3.14 einen weiteren Dezimalwert hinzu. Zum Beispiel geklickt, sobald das Etikett 3.141 würde angezeigt werden, zum zweiten Mal: ​​3,1415 etc etc.Wie man Label Widget jedes Mal aktualisiert Button klickt mit TkInter - Python

Hier ist der Code:

# Import the Tkinter functions 
from Tkinter import * 


# Create a window 
loan_window = Tk() 

loan_window.geometry('{}x{}'.format(500, 100)) 

# Give the window a title 
loan_window.title('Screeen!') 

## create the counter 
pi_num = 3.14 

# NUMBER frame 
frame = Frame(loan_window, width=100, height=50) 
frame.pack() 

def addPlaceValue(): 

    pi_num= 3.14 
    return pi_num 


## create a label and add it onto the frame 
display_nums = Label(frame, text = 'pi_num') 
display_nums.pack() 


#### create a label and add it onto the frame 
##display_nums = Label(frame, text = pi_num) 
##display_nums.pack() 
## 

# Create a button which starts the calculation when pressed 
b1 = Button(loan_window, text = 'Click me', command= addPlaceValue, takefocus = False) 
b1.pack() 



# Bind it 
loan_window.bind('<Return>', addPlaceValue()) 


# event loop 
loan_window.mainloop() 

ich viele Male versucht haben, den Überblick über die Tastenklicks zu halten, aber versäumt es zu tun. Ich sehe ein Problem; Der Code weiß nicht, auf welches n-te Mal eine Schaltfläche geklickt wird. Irgendwelche Ideen?

Antwort

0

Ich weiß nicht, wie Sie pi für die Anzahl der Ziffern gespeichert haben .... Aber, hier ist ein Weg, um die Präzision zu spezifizieren sehr leicht (wir eine Genauigkeit von 100 sagen):

from sympy import mpmath 
mpmath.dps = 100 #number of digits 
PI = str(mpmath.pi) 

Der PI ist eine konstante Instanz und ist nicht von Natur aus untersetzbar. Daher konvertieren wir ihn in eine str zur späteren Indizierung.

Nun, wie für die Aktualisierung des Textes können wir einen Zähler verfolgen jedes Mal, wenn die Taste platziert wird.

Wir werden diese Zähler als Attribut loan_window mit einem Standard von 4 festlegen können die häufigste Darstellung von pi angezeigt 3.14 dann den Beschriftungstext erhöhen und ändern:

Edit: Beim Binden Sie passieren auch nur der Funktionsname anstelle von function_name() das ruft tatsächlich die Funktion

import sympy, Tkinter as tk 

sympy.mpmath.dps = 100 
PI = str(sympy.mpmath.pi) 

loan_window = tk.Tk() 
loan_window.counter = 4 

frame = tk.Frame(loan_window, width=100, height=50) 
frame.pack() 

def addPlaceValue(): 

    loan_window.counter += 1 
    display_nums['text'] = PI[:loan_window.counter] 

display_nums = tk.Label(frame, text = PI[:loan_window.counter]) 
display_nums.pack() 

b1 = tk.Button(loan_window, text = 'Click me', command= addPlaceValue, takefocus = False) 
b1.pack() 

loan_window.bind('<Return>', addPlaceValue) 
loan_window.mainloop() 
auf