Hirdetés
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- BerserkGuts: 9800X3D Hitvallás, Dogma megcáfolása egy RTX5080+12600K-val
- sziku69: Fűzzük össze a szavakat :)
- btz: Internet fejlesztés országosan!
- Parci: Milyen mosógépet vegyek?
- GoodSpeed: Philips AWP9820 (vízlágyító) Calgon helyett?
- vrob: Próbálkozás 386 alaplap újraélesztésre
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Met: Metallica: M72 World Tour
Új hozzászólás Aktív témák
-
Lacces
őstag
Sziasztok!
Ismét jelentkezem.
Most egy GUI-s feladatot csináltam meg a könyv alapján. Egy kis vonatot rajzol ki, színezve a vagonok, ablakok, arcok.
Első kérdésem, ami talán egyszerűbb:
Tudtok benne kód rövidítést? Esetleg "szebb" kódot? Már kaptam jobb megoldásokat itt a fórumon.Második kérdésem:
Van egy adott light() és egy light34(). Az előbbi az ablak színét feketéről sárgára változtatja. Az utóbbi, a 3. és 4. vagon ablakit változtatja meg.
Ez ügyben a kérdésem: Hogyan lehet azt elérni, hogy, adott indexű ablakokat világítson csak meg?Próbálkoztam vele, de nem jött össze:
light()-ot így módosítani, hogy kap egy index nevű paramétert, ha az f == index, akkor azt az f-et fogja csak módosítani.
def light(self, index):
"felkapcsolja a vagon belső világítását"
for f in self.ablakIndex:
if f==index:
self.canvas_.itemconfigure(f, fill="yellow")
def light34(self):
"ablak színének megváltoztatása a 3.és 4. vagonban"
self.v3.light(1)
self.v4.light(2)És egy másik kérdés is érdekelne, hogyan lehetne, egyszerre több ablak indexét is átadni? Én tömbre gondoltam, vagy numerikus listára. És akkor az elágazás a for ciklusban így nézne ki (light metódusban)
if f in numerikuslista
Bár ezt sem tartom szép megoldásnak...Teljes, működő kód:
# coding: iso-8859-2
from Tkinter import *
def circle(can,x,y,r, colour="white"):
"a <can> vászon egy <r> sugarú kör rajza <x,y> pontban"
can.create_oval(x-r, y-r, x+r, y+r, fill=colour) # kör rajzolása elipszisből
class Application(Tk):
def __init__(self):
#Szülőosztály konstruktora:
Tk.__init__(self)
self.can=Canvas(self, width=475, height=130, bg="white")
self.can.pack(side=TOP, padx=5, pady=5)
Button(self, text="Train", command=self.rajzolas).pack(side=LEFT)
Button(self, text="Hello", command=self.kineznek).pack(side=LEFT)
Button(self, text="Világítás", command=self.light34).pack(side=LEFT)
def rajzolas(self):
"4 vasúti kocsi létrehozása vásznon"
# a vasúti kocsikat a vagon osztályban vannak definiálva
self.v1=vagon(self.can, 10, 30)
self.v2=vagon(self.can, 130,30, "dark green")
self.v3=vagon(self.can, 250,30, "maroon")
self.v4=vagon(self.can, 370, 30, "purple")
def kineznek(self):
"személyek megjelenése bizonyos ablakokban"
self.v1.perso(3) # 1.vagon, 3.ablak
self.v3.perso(1) # 3.vagon, 1.ablak
self.v3.perso(2) # 3.vagon, 2.ablak
self.v4.perso(2) # 4.vagon, 1.ablak
def light34(self):
"ablak színének megváltoztatása a 3.és 4. vagonban"
self.v3.light()
self.v4.light()
class vagon:
# a paramétereket a rajzolás függvényben kapja
# a kosntruktorhoz hozzáadtam a colour paramétert
def __init__(self, canvas_, x, y, colour="navy"):
"egy kis vagon rajza a <canvas> vásznon <x,y> pontban"
# paraméterek tárolása példány-változókban
self.canvas_, self.x, self.y=canvas_, x, y
# alap téglalap rajzolása
canvas_.create_rectangle(x,y, x+95, y+60, fill=colour)
# 3 ablak 25x40 pixel, 5 pixel távolságra
self.ablakIndex=[] # ablak hivatkozásainak tárolása egy lista
for ablak in range(x+5, x+90, 30):
#az ablak index-hez listához (hozzáfűzi) hozzáadja a következő canvas-okat.
self.ablakIndex.append(canvas_.create_rectangle(ablak, y+5, ablak+25, y+40, fill="black"))
# két 12 pixel sugarú kerék
circle(canvas_, x+18, y+73, 12, "gray")
circle(canvas_, x+77, y+73, 12, "gray")
def perso(self, wind):
"egy személy mejelenése a <wind> ablakban"
# minden egyes ablak közepe koordinátájának a kiszámítása:
xm=self.x+wind*30-12
ym=self.y+25
circle(self.canvas_, xm, ym, 10, "pink") #arc
circle(self.canvas_, xm-5, ym-3, 2) #balszem
circle(self.canvas_, xm+5, ym-3, 2) #jobszem
circle(self.canvas_, xm, ym+5, 3) #száj
def light(self):
"felkapcsolja a vagon belső világítását"
for f in self.ablakIndex:
self.canvas_.itemconfigure(f, fill="yellow")
Application().mainloop()
Új hozzászólás Aktív témák
- EAFC 26
- Suzuki topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- MIUI / HyperOS topik
- World of Tanks - MMO
- A legrosszabb CPU-k – az ExtremeTech szerint
- Luck Dragon: Asszociációs játék. :)
- exHWSW - Értünk mindenhez IS
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- iPad topik
- További aktív témák...
- BESZÁMÍTÁS! LENOVO ThinkPad P15 Gen2 munkaállomás - i7 11800H 64GB DDR4 1TB SSD RTX A2000 4GB W
- BESZÁMÍTÁS! LENOVO ThinkPad P15 Gen2 munkaállomás - i7 11800H 64GB DDR4 1TB SSD RTX A2000 4GB W
- BESZÁMÍTÁS! LENOVO ThinkPad P15 Gen2 munkaállomás - i7 11800H 16GB DDR4 1TB SSD RTX A2000 4GB W
- BESZÁMÍTÁS! LENOVO ThinkPad P15 Gen1 munkaállomás - i7 10850H 16GB DDR4 256GB SSD Quadro T1000 4GB W
- BESZÁMÍTÁS! Apple iPad Air 5 10.9 256GB WiFi tablet extrákkal garanciával hibátlan működéssel
- BESZÁMÍTÁS! MSI MAG B550 R7 5700X 32GB DDR4 1TB SSD RX 9070 XT 16GB NZXT H440 fehér GIGABYTE 750W
- AKCIÓ! iMac Pro Intel Xeon W2150B 64GB 1TB VEGA 64 16GB!!! 1 év garancia!
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
- Samsung Galaxy S24 Ultra 512GB Kártyafüggetlen 1év Garanciával
- HIBÁTLAN iPhone 12 Pro Max 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS4025
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

