Python – kreslenie textu do kruhu

Vytvorte program, v ktorom môžeme kresliť otočené texty na mieste kliknutie myši. V programe sú dve súčiastky entry. Do jednej zadávame text, ktorý sa má písať do canvasu, a do druhej zadávame počet jeho otočení. Texty sa nakreslia náhodnou farbou z vopred určených farieb

Autor tohoto programu je Marek Mak

Úvodné okno

Zadáme vstupné údaje

Riešenie

import math
import tkinter as tk
import random

colors = ['red', 'green', 'blue', 'purple','pink','orange','magenta','cyan']

def typeText(a, b, angle, text, colorPicker):
    x = math.cos(math.radians(angle)) * 50 + a
    y = math.sin(math.radians(angle)) * 50 + b
    obj = canvas.create_text(a, b, text=text, fill=colorPicker)
    canvas.itemconfig(obj, angle=-angle)
    canvas.coords(obj, x, y)
    return obj

root = tk.Tk()
canvas = tk.Canvas(root, width=500, height=500)

times_label = tk.Label(root, text="Zadajte počet otáčok")
times_label.pack()
times_entry = tk.Entry(root)
times_entry.pack(pady=3)

word_label = tk.Label(root, text="Zadajte slovo")
word_label.pack()
word_entry = tk.Entry(root)
word_entry.pack(pady=3)

def typingo(event):
    x = event.x
    y = event.y
    
    word_entry_value = word_entry.get()

    times_entry_value = times_entry.get()
    c = 360 / int(times_entry_value)

    colorPicker = random.choice(colors)

    for i in range(0,360,int(c)):
        typeText(x,y,i,word_entry_value,colorPicker)


canvas.bind("<Button-1>", typingo)



canvas.pack()
root.mainloop()

Auto

#Python program to draw car in turtle programming
 
# Import required library
import turtle
  
   
car = turtle.Turtle()
 
 
# Below code for drawing rectangular upper body
car.color('#008000')
car.fillcolor('#008000')
car.penup()
car.goto(0,0)
car.pendown()
car.begin_fill()
car.forward(370)
car.left(90)
car.forward(50)
car.left(90)
car.forward(370)
car.left(90)
car.forward(50)
car.end_fill()
  
   
# Below code for drawing window and roof
car.penup()
car.goto(100, 50)
car.pendown()
car.setheading(45)
car.forward(70)
car.setheading(0)
car.forward(100)
car.setheading(-45)
car.forward(70)
car.setheading(90)
car.penup()
car.goto(200, 50)
car.pendown()
car.forward(49.50)
  
   
# Below code for drawing two tyres
car.penup()
car.goto(100, -10)
car.pendown()
car.color('#000000')
car.fillcolor('#000000')
car.begin_fill()
car.circle(20)
car.end_fill()
car.penup()
car.goto(300, -10)
car.pendown()
car.color('#000000')
car.fillcolor('#000000')
car.begin_fill()
car.circle(20)
car.end_fill()
  
   
car.hideturtle()


turtle.done()

def draw_circle(color, radius, x, y):
  t.penup()
  t.fillcolor(color)
  t.goto(x,y)
  t.pendown()
  t.begin_fill()
  t.circle(radius)
  t.end_fill()

Snehuliak a auto

import turtle
 
t = turtle.Turtle()
 
def draw_circle(color, radius, x, y):
  t.penup()
  t.fillcolor(color)
  t.goto(x,y)
  t.pendown()
  t.begin_fill()
  t.circle(radius)
  t.end_fill()
 
#Below three statements for drawing snowman body
draw_circle("#ffffff", 30, 0, -40)
draw_circle("#ffffff", 40, 0, -100)
draw_circle("#ffffff", 60, 0, -200)
 
draw_circle("#ffffff", 2, -10, -10) #Drawing left eye
draw_circle("#ffffff", 2, 10, -10) #Drawing right eye
draw_circle("#FF6600", 3, 0, -15) #Drawing nose
 
#Below three statements for drawing buttons
draw_circle("#ffffff", 2, 0, -35)
draw_circle("#ffffff", 2, 0, -45)
draw_circle("#ffffff", 2, 0, -55)
 
#Code for drawing left arm
t.penup()
t.goto(-15,-35)
t.pendown()
t.pensize(5)
t.goto(-75, -50)
#Code for drawing right arm
t.penup()
t.goto(15,-35)
t.pendown()
t.pensize(5)
t.goto(75, -50)
 
#Code for drawing hat
t.penup()
t.goto(-35, 8)
t.color("black")
t.pensize(6)
t.pendown()
t.goto(35, 8)
 
t.goto(30, 8)
t.fillcolor("black")
t.begin_fill()
t.left(90)
t.forward(15)
t.left(90)
t.forward(60)
t.left(90)
t.forward(15)
t.end_fill()




#Python program to draw car in turtle programming
 
# Import required library
import turtle
  
   
car = turtle.Turtle()
 
 
# Below code for drawing rectangular upper body
car.color('#008000')
car.fillcolor('#008000')
car.penup()
car.goto(0,0)
car.pendown()
car.begin_fill()
car.forward(370)
car.left(90)
car.forward(50)
car.left(90)
car.forward(370)
car.left(90)
car.forward(50)
car.end_fill()
  
   
# Below code for drawing window and roof
car.penup()
car.goto(100, 50)
car.pendown()
car.setheading(45)
car.forward(70)
car.setheading(0)
car.forward(100)
car.setheading(-45)
car.forward(70)
car.setheading(90)
car.penup()
car.goto(200, 50)
car.pendown()
car.forward(49.50)
  
   
# Below code for drawing two tyres
car.penup()
car.goto(100, -10)
car.pendown()
car.color('#000000')
car.fillcolor('#000000')
car.begin_fill()
car.circle(20)
car.end_fill()
car.penup()
car.goto(300, -10)
car.pendown()
car.color('#000000')
car.fillcolor('#000000')
car.begin_fill()
car.circle(20)
car.end_fill()
  
   
car.hideturtle()


turtle.done()

def draw_circle(color, radius, x, y):
  t.penup()
  t.fillcolor(color)
  t.goto(x,y)
  t.pendown()
  t.begin_fill()
  t.circle(radius)
  t.end_fill()

Snehuliak

# Import required module
import turtle
  
  
  
# Create turtle object
t = turtle.Turtle()
  
# Create a screen 
screen =turtle.Screen()
  
# Set background color
screen.bgcolor("sky blue")
  
  
  
# Function to draw body of snowman
def draw_circle(color, radius, x, y):
    t.penup()
    t.fillcolor (color)
    t.goto (x, y)
    t.pendown()
    t.begin_fill()
    t.circle (radius)
    t.end_fill()
  
  
      
# Illustrating snowman 
# Drawing snowman body
draw_circle ("#ffffff", 30, 0, -40)
draw_circle ("#ffffff", 40, 0, -100)
draw_circle ("#ffffff", 60, 0, -200)
  
# Drawing left eye
draw_circle ("#ffffff", 2, -10, -10) 
  
# Drawing right eye
draw_circle ("#ffffff", 2, 10, -10) 
  
# Drawing nose
draw_circle ("#FF6600", 3, 0, -15)  
   
# Drawing buttons on
draw_circle ("#ffffff", 2, 0, -35)
draw_circle ("#ffffff", 2, 0, -45)
draw_circle ("#ffffff", 2, 0, -55)
  
  
  
# Function to draw arms 
def create_line(x, y, length, angle):
    t.penup()
    t.goto(x, y)
    t.setheading(angle)
    t.pendown()
    t.forward(length)
    t.setheading(angle + 20)
    t.forward(20)
    t.penup()
    t.back(20)
    t.pendown()
    t.setheading(angle - 20)
    t.forward(20)
    t.penup()
    t.home()
     
  
      
# Drawing left arm
create_line(-70, -50, 50, 160) 
  
# Drawing right arm
create_line(70, -50, 50, 20) 
  
  
  
# Drawing hat
t.penup()
t.goto (-35, 8)
t.color ("black")
t.pensize (6)
t.pendown()
t.goto (35, 8)
  
t.goto (30, 8)
t.fillcolor ("black")
t.begin_fill()
t.left (90)
t.forward (15)
t.left (90)
t.forward (60)
t.left (90)
t.forward (15)
t.end_fill()


turtle.done()

Matematika – Zoznam čísel

  • Počet prvkov
  • Minimálna hodnota je
  • Maximálna hodnota je
  • Počet podmienených prvkov je
ppp = 0 
zoznam = [10,700,500,1370,270,1230,120,7040,2330]

for i in zoznam:
    if i < sum(zoznam) / len(zoznam):
        ppp = ppp + 1

print ("Pocet prvkov je:", len(zoznam))

print ("Minimalna hodnota je:", min(zoznam))

print ("Maximalna hodnota je:", max(zoznam))

print ("Pocet podpriemernych prvkov je:", ppp)

Zmenšujúce sa kruhy

import tkinter

canvas = tkinter.Canvas(bg='white', width=1000, height=2000)

canvas.pack()
x0 = 100
y0 = 100
r0 = 100
r = r0
posun = 0
farba1, farba2, farba3, farba4 = 'blue', 'black','red', 'green'
for i in range(10):
    x= x0 +250 
    y= y0 + 200 
    canvas.create_oval(x - r0 + posun, y + 100 -r0 + posun, x + r0 - posun, y + 100 + r0 - posun, fill=farba1)
    canvas.create_text(x, y+100, text='+')
    farba1, farba2, farba3, farba4= farba4, farba1, farba2, farba3
    posun = posun + (1/9) * r
    r = (8/9) * r

tkinter.mainloop()

Zmenšujúce sa obdlžniky

import tkinter
canvas = tkinter.Canvas(bg=’white‘, width=1000, height=2000)
canvas.pack()

x0 = 200
y0 = 100
strana01 = 270
strana02 = 150
posun1 = 0
posun2 = 0

farba1, farba2, farba3, farba4 = ‚black‘, ‚green‘, ‚blue‘, ‚red‘
strana1 = strana01
strana2 = strana02
for i in range(8):
canvas.create_rectangle(x0 + posun1, y0 + posun2, x0 + strana01 – posun1, y0 + strana02 – posun2, fill=farba1)
farba1, farba2, farba3, farba4 = farba4, farba1, farba2, farba3
posun1 = posun1 + (1/18) * strana1
strana1 = (8/9) * strana1
posun2 = posun2 + (1/18) * strana2
strana2 = (8/9) * strana2

tkinter.mainloop()

Trojuholníky stredovo symetrické

import tkinter

canvas = tkinter.Canvas()
canvas.pack()
farba1,farba2,farba3 = 'blue', 'red','black'
for prem in range(6):
      a = (150+1/2*prem*20, 150+prem*20)
      b = (150+1/2*prem*20, 350-1/2*prem*20)
      c = (350-prem*20, 350-1/2*prem*20)
      canvas.create_line(a, b, c, a, fill=farba1)
      farba1,farba2,farba3 = farba3, farba1, farba2
tkinter.mainloop()

Kreslenie trojuhoľníkov

# vytvoríme plátno na ktorom sa vytvára text a grafika, plátno má farbu bielu, šírku 1000 a výšku 2000
import tkinter
canvas = tkinter.Canvas(bg='white', width=1000, height=2000)
canvas.pack()

# základné parametre textov, teda súradnice (x0,y0) prvého písmena textov
x0 = 100
y0 = 100
# určenie hodnôt  premenných farba1, farba2,... až farba6, daných farbami trojuholníkov
farba1, farba2, farba3, farba4, farba5, farba6  = 'red', 'green', 'green', 'green','red', 'red'
# určenie hodnôt - teda reťazcov znakov - premenných text1, text2,...až text6
text1, text2, text3, text4, text5, text6 = 'červený trojuholník', 'zelený trojuholník', 'zelený trojuholník', 'zelený trojuholník', 'červený trojuholník', 'červený trojuholník'
#for cyklus so šiestimi cyklami
for i in range(6):
    # zmena súradníc prvého písmena textov v jednotlivých cykloch, v prvom cykli i=0
    x= x0 + 100
    y= y0 + 200 *  i 
    # výpis textu, kde (x,y) sú súradnice prvého písmena textu text1
    canvas.create_text(x, y, text=text1) 
    # zobrazenia trojuholníka daného bodmi A(150, 250+193*i), B(250-7*i,250+193*i), C(150,150+200*i)
    a = 150, 250 - 7 * i + 200 *  i 
    b = 250 - 7 * i, 250 - 7 * i + 200 * i
    c = 150, 150 + 200 * i
    canvas.create_line(a, b, c, a, fill=farba1)
    canvas.create_text(a, text='A')
    canvas.create_text(b, text='B')
    canvas.create_text(c, text='C')
    # zámena hodnoty premennej farba1 použitej pre vyfarbenie strán trojuholníka v i-tom cykle
    farba1, farba2, farba3, farba4, farba5, farba6 = farba6, farba1, farba2, farba3, farba4, farba5
    # zámena hodnoty premennej text1 použitej na pomenovanie trojuholníka v i-tom cykle
    text1, text2, text3, text4, text5, text6 = text6, text1, text2, text3, text4, text5

tkinter.mainloop()

Štvorce stredovo symetrické

import tkinter

canvas = tkinter.Canvas(bg='white', width=1000, height=2000)

canvas.pack()
x0 = 100
y0 = 100
sirka0 = 140
farba1, farba2, farba3  = 'blue', 'green', 'black'
for i in range(8):
    x= x0 +250 
    y= y0 + 200 
    canvas.create_rectangle(x + i * sirka0/14 , y + i * sirka0/14, x + 140 - i * sirka0/14, y + 140 - i * sirka0/14, fill = farba1)
    farba1, farba2, farba3 = farba3, farba1, farba2


tkinter.mainloop()

Kreslenie štvorcov

# vytvoríme plátno na ktorom sa vytvára text a grafika, plátno má farbu bielu, šírku 1000 a výšku 2000
import tkinter
canvas = tkinter.Canvas(bg='white', width=1000, height=2000)
canvas.pack()

# základné parametre štvorcov, teda súradníc (x0,y0) ľavého horného vrcholu štvorcov a súčasne prvého písmena pomenovania štvorcov, strana0 je dĺžka strany štvorca
x0 = 100
y0 = 100
strana0 = 50
# určenie hodnôt  premenných farba1, farba2,... až farba8, daných farbami výplne štvorcov
farba1, farba2, farba3, farba4, farba5, farba6, farba7, farba8  = 'blue', 'green', 'green', 'black','black', 'red', 'red', 'blue'
# určenie hodnôt - teda reťazcov znakov - premenných text1, text2,...až text8
text1, text2, text3, text4, text5, text6, text7, text8 = 'modry stvorec', 'zeleny stvorec', 'zeleny stvorec', 'cierny stvorec', 'cierny stvorec', 'cerveny stvorec','cerveny stvorec', 'modry stvorec'
#for cyklus s ôsmimi cyklami
for i in range(8):
    # zmena hodnôt  parametrov v jednotlivých cykloch, v prvom cykle i=0
    x= x0 +250 
    y= y0 + 100 *  i 
    strana = strana0 - 5 * i
    # výpis textu, kde (x,y) sú súradnice prvého písmena textu text1
    canvas.create_text(x, y, text=text1) 
    # zobrazenia štvorca daného súradnicami (x, y+20) ľavého horného vrcholu štvorca a súradnicami (x+strana,y+20+strana) pravého dolného vrcholu stvorca
    canvas.create_rectangle(x, y + 20, x + strana, y + 20 + strana, fill=farba1)
    # zámena hodnoty premennej farba1 použitej pre vyfarbenie stvorca v i-tom cykle
    farba1, farba2, farba3, farba4, farba5, farba6, farba7, farba8 = farba8, farba1, farba2, farba3, farba4, farba5, farba6, farba7
    # zámena hodnoty premennej text1 použitej na pomenovanie stvorca v i-tom cykle
    text1, text2, text3, text4, text5, text6, text7, text8 = text8, text1, text2, text3, text4, text5, text6, text7   

tkinter.mainloop()

Obdĺžniky stredovo symetrické

import tkinter

canvas = tkinter.Canvas(bg='white', width=1000, height=2000)

canvas.pack()
x = 100
y = 100
sirka1 = 240
sirka2 = 130
farba1, farba2, farba3  = 'blue', 'green', 'black'
for i in range(8):
    canvas.create_rectangle(x + i * 10 , y + i * 5, x + sirka1 - i * 10, y + sirka2 - i * 5, fill = farba1)
    farba1, farba2, farba3 = farba3, farba1, farba2

tkinter.mainloop()

Kreslenie obdĺžníkov

# vytvoríme plátno na ktorom sa vytvára text a grafika, plátno má farbu bielu, šírku 1000 a výšku 2000
import tkinter
canvas = tkinter.Canvas(bg='white', width=1000, height=2000)
canvas.pack()

# základné parametre obdlzikov, teda súradníc (x0,y0) ľavého horného vrcholu obdlznikov a súčasne prvého písmena pomenovania obdlznikov, strana1 a strana2 sú dĺžky strán štvorca
x0 = 100
y0 = 100
strana0 = 50
# určenie hodnôt  premenných farba1, farba2,... až farba8, daných farbami výplne obdlznikov
farba1, farba2, farba3, farba4, farba5, farba6, farba7, farba8  = 'blue', 'green', 'green', 'black','black', 'red', 'red', 'blue'
# určenie hodnôt - teda reťazcov znakov - premenných text1, text2,...až text8
text1, text2, text3, text4, text5, text6, text7, text8 = 'modry obdlznik', 'zeleny obdlznik', 'zeleny obdlznik', 'cierny obdlznik', 'cierny obdlznik', 'cerveny obdlznik','cerveny obdlznik', 'modry obdlznik'
#for cyklus s ôsmimi cyklami
for i in range(8):
    # zmena hodnôt  parametrov v jednotlivých cykloch, v prvom cykle i=0
    x= x0  
    y= y0 + 100 *  i 
    strana1 = 100 - 5 * i 
    strana2 = 50 - 5 * i
    # výpis textu, kde (x,y) sú súradnice prvého písmena textu text1
    canvas.create_text(x + 50, y + 50, text=text1) 
    # zobrazenia obdlznika daného súradnicami (x, y) ľavého horného vrcholu obdlznika a súradnicami (x+strana1,y+strana2) pravého dolného vrcholu obdlznika
    canvas.create_rectangle(x, y, x + strana1, y + strana2, fill=farba1)
    # zámena hodnoty premennej farba1 použitej pre vyfarbenie obdlznika v i-tom cykle
    farba1, farba2, farba3, farba4, farba5, farba6, farba7, farba8 = farba8, farba1, farba2, farba3, farba4, farba5, farba6, farba7
    # zámena hodnoty premennej text1 použitej na pomenovanie obdlznika v i-tom cykle
    text1, text2, text3, text4, text5, text6, text7, text8 = text8, text1, text2, text3, text4, text5, text6, text7   

tkinter.mainloop()

Kruhy stredovo symetrické

import tkinter

canvas = tkinter.Canvas(bg='white', width=1000, height=2000)

canvas.pack()
x0 = 100
y0 = 100
r0 = 100
farba1, farba2, farba3  = 'blue', 'black','red'
for i in range(6):
    x= x0 +250 
    y= y0 + 200 
    r = r0 - 10 * i
    canvas.create_oval(x-r, y+100-r, x+r, y+100+r, fill=farba1)
    canvas.create_text(x, y+100, text='+')
    farba1, farba2, farba3 = farba3, farba1, farba2
  

tkinter.mainloop()

Kreslenie kruhov

# vytvoríme plátno na ktorom sa vytvára text a grafika, plátno má farbu bielu, šírku 1000 a výšku 2000
import tkinter
canvas = tkinter.Canvas(bg='white', width=1000, height=2000)
canvas.pack()

# základné patametre kružníc, teda sůradníc (x0,y0) stredu kružníc a polomeru prvej kružnice
x0 = 100
y0 = 100
r0 = 20
# určenie hodnôt  premenných farba1, farba2,... až farba6, daných farbami výplne kružníc
farba1,farba2,farba3,farba4,farba5,farba6='blue','black','green','red','yellow','brown'
# určenie hodnôt - teda reťazcov znakov - premenných text1, text2,...až text6
text1,text2,text3,text4,text5,text6='modrý kruh','čierny kruh','zelený kruh','červený kruh','žltý kruh','hnedý kruh'
#for cyklus so šiestimi cyklami
for i in range(6):
# zmena hodnôt  parametrov v jednotlivých cykloch, v prvom cykle i=0
    x = x0 + 250 
    y = y0 + 200 *  i 
    r = r0 + 10 * i
    # výpis textu, kde (x,y) sú súradnice prvého písmena textu text1
    canvas.create_text(x, y, text=text1) 
    # zobrazenia kruhu daného súradnicami (x-r, y+100-r, x+r, y+100), so stredom so súradnicami (x,y+100) označeným pomocou + a farbou zodpovedajúcou hodnotou premennej farba1 v danom i-tom cykle
    canvas.create_oval(x - r, y + 100 - r, x + r, y  + 100 + r,fill=farba1)
    canvas.create_text(x, y + 100, text = '+')
    # zámena hodnoty premennej farba1 použitej pre vyfarbenie kruhu v i-tom cykle
    farba1,farba2,farba3,farba4,farba5,farba6=farba6,farba1,farba2,farba3,farba4,farba5
    # zámena hodnoty premennej text1 použitej na pomenovanie kruhu v i-tom cykle
    text1,text2,text3,text4,text5,text6=text6,text1,text2,text3,text4,text5   

tkinter.mainloop()

Vianočný stromček na Raspberry Pi

Ako prvé urobte urobte update

sudo apt-get update

Začnite s tým, že stiahnete xmas tree súbor

wget https://bit.ly/2Lr9CT3 -O tree.py

Teraz urobte skúšku, či funguje stromček s príkazom nižšie. Mal by sa rozsvietiť celý na bielo

python3 tree.py

Keď používate operačný systém Raspbian desktop, tak nepotrebujete doinštalovať ostatné súčasti. Ale ak používate Raspbian lite, tak musíte doinštalovať python3-gpiozero

sudo apt install python3-gpiozero

Teraz pomocou nano vytvorte nejaký súbor, je jedno, ako ho pomenujete napríklad ale na konci musíte zadať .py

nano farby.py

Teraz dopíšte do neho napríklad moju konfiguráciu farieb:

from tree import RGBXmasTree
from time import sleep
from colorzero import Color

tree = RGBXmasTree()

colors = [Color('red'), Color('green'), Color('blue'), Color('purple'), Color('yellow')] # add more if you like

try:
    while True:
        for color in colors:
            tree.color = color
            sleep(1)
except KeyboardInterrupt:
    tree.close()

Spustíte ho

python3 farby.py