furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Rysowanie w Turtle - Okno wprowadzania danych - textinput i numinput

WERSJA ROBOCZA WPISU

Turtle udostępnia dwa okienka do wprowadzania danych - textinput() i numinput()

textinput

(dokumentacja: textinput )

python - rysowanie w turtle - textinput

Składnia:

textinput(title, prompt)

title – string prompt – string
import turtle

napis = turtle.textinput('Opis figury', 'Napis')

print('Napis:', napis)

turtle.mainloop()

Okno pozwala na wpisanie dowolnego tekstu i zatwierdzenie klawiszem Enter lub przyciskiem Ok. Przycisk Cancel zwraca None więc sprawdzając is None można wykryć anulowanie.

Liczba wprowadzona w tym oknie jest traktowana jak zwykły tekst i nie jest ona zamieniana na int lub float. Nie jest też sprawdzane czy liczba jest poprawna i czy nie wykracza poza jakiś przedział.

Nie ma też możliwości podania tekstu domyślnego aby można było go tylko zatwierdzić lub tekstu poprzednio wprowadzonego aby można go było zmienić w oknie.

numinput

(dokumentacja: numinput )

python - rysowanie w turtle - numinput python - rysowanie w turtle - numinput
import turtle

ilosc = turtle.numinput('Powtarzanie figury', 'Ilość')

print('Ilość:', ilosc)

turtle.mainloop()

Okno pozwala na wpisanie liczby i zatwierdzenie klawiszem Enter lub przyciskiem Ok. Przycisk Cancel zwraca None więc sprawdzając is None można wykryć anulowanie.

Okno nie pozwala na wprowadzenie tekstu Liczba wprowadzona w tym oknie jest traktowana jak zwykły tekst. Nie jest ona zamieniana na liczbę int lub float. Nie jest też sprawdzane czy liczba jest poprawna i czy nie wykracza poza jakiś przedział.

Nie ma też możliwości podania tekstu domyślnego aby można było go tylko zatwierdzić lub tekstu poprzednio wprowadzonego aby można go było zmienić w oknie.

import turtle

ilosc = turtle.numinput('Powtarzanie figury', 'Ilość', 5)

if ilosc is not None:
    print('(1) Ilość:', ilosc)
else:
    print('(1) brak')

if ilosc:
    print('(2) Ilość:', ilosc)
else:
    print('(2) brak')

turtle.mainloop()

Jeśli chcemy użyć do zmiany istniejącej wartości to lepiej zastosować osobną zmienną na wynik aby nie nadpisać oryginalnej wartości wartością None gdy wciśniemy Cancel

import turtle

ilosc = 5

nowa_ilosc = turtle.numinput('Powtarzanie figury', 'Ilość', ilosc)

if nowa_ilosc is not None:
    ilosc = nowa_ilosc

print('Ilość:', ilosc)

turtle.mainloop()

Uwaga: Lepiej sprawdzać if zmienna is None: niż if zmienna: bo to ostatnie traktuje pusty tekst oraz wartość zero tak samo jak None - czyli anulowanie wprowadzania - co nie zawsze jest porządane.

import turtle

ilosc = turtle.numinput('Powtarzanie figury', 'Ilość')

if ilosc is not None:
    print('(1) ilość:', ilosc)
else:
    print('(1) zrezygnowano z wprowadzania danych')

if ilosc:
    print('(2) ilość:', ilosc)
else:
    print('(2) zrezygnowano z wprowadzania danych')

napis = turtle.numinput('Powtarzanie figury', 'Ilość')

if napis is not None:
    print('(1) napis:', napis)
else:
    print('(1) zrezygnowano z wprowadzania danych')

if napis:
    print('(2) napis:', napis)
else:
    print('(2) zrezygnowano z wprowadzania danych')

turtle.mainloop()
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury