Text "Die einfachste Python-Einführungsklasse" von Fumitaka Osawa, (Sotec Publishing, 2017) "Kann ich mehr erhöhen?" Das ist das Motiv. Auf jeden Fall werden Farbmündungen nachgerüstet.
: random.randint(0,9) Sollte verbessert werden.
random.randint(0, 800), random.randint(0, 600) #x,y Position
random.randint(0, 10)-5 # dx
color1 = "#e8f" # rgb color
Wie soll ich das machen?
color1 = "#"+
hex(random.randint(1, 15)).lstrip("0x") +
hex(random.randint(1, 15)).lstrip("0x") +
hex(random.randint(1, 15)).lstrip("0x")
Mögen. Was machst du
Fügen Sie danach viele Bälle zu den Bällen hinzu.
balls = []
for j in range(100):
balls.append(Ball(x, y, dx, dy, color)
In der Tat schlägt es zweimal in drei Mal fehl.
File "C:\Users\shige\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 2567, in __init__
self.tk.call(
_tkinter.TclError: invalid color name "#12"
Fehler beim Generieren von Farbzeichen (möglicherweise behoben).
Ich werde alles aussetzen.
# Copyright (c) 2020 daddygongon
# Released under the MIT license
# https://opensource.org/licenses/mit-license.php
import tkinter as tk
import random
speed = 1
class Ball:
global speed
def __init__(self, x, y, dx, dy, color):
self.x = x
self.y = y
self.dx = dx*speed
self.dy = dy*speed
self.color = color
self.shape = None
def move(self, canvas):
self.erase(canvas)
self.x = self.x + self.dx
self.y = self.y + self.dy
self.draw(canvas)
if (self.x >= canvas.winfo_width() or self.x <= 0):
self.dx = -self.dx
if (self.y >= canvas.winfo_height() or self.y <= 0):
self.dy = -self.dy
def erase(self, canvas):
canvas.delete(self.shape)
def draw(self, canvas):
self.shape = canvas.create_oval(self.x - 20, self.y - 20, self.x +
20, self.y + 20, fill=self.color, width=0)
def loop():
for b in balls:
b.move(canvas)
root.after(10, loop)
root = tk.Tk()
root.geometry("800x600")
color1 = "#"+hex(random.randint(1, 2)
).lstrip("0x")+hex(random.randint(1, 2)
).lstrip("0x") + hex(random.randint(1, 2)
).lstrip("0x")
canvas = tk.Canvas(root, width=800, height=600, bg=color1)
canvas.place(x=0, y=0)
balls = []
for j in range(100):
color1 = "#"+hex(random.randint(8, 15)
).lstrip("0x")+hex(random.randint(8, 15)
).lstrip("0x") + hex(random.randint(8, 15)
).lstrip("0x")
balls.append(Ball(random.randint(0, 800), random.randint(0, 600),
random.randint(0, 10)*2-10, random.randint(0,10)*2-10, color1))
root.after(10, loop)
root.mainloop()
Es scheint, dass die letzte Hauptschleife für den Leerlauf nicht benötigt wird.
Recommended Posts