Új hozzászólás Aktív témák
-
cadtamas
tag
Üdv, ismét elakadtam.
Van egy programom, ami egy elektromos ellenállásra rajzolja ki a megfelelő színkódokat.
Gerard Swinnen 13.4. feladat
Az lenne a feladat, hogy miután beütöm az ellenállás értékét, ne gombhoz legyen rendelve a csíkok átszínezése, hanem csak simán az <enter> gomb lenyomásával működjön.
Beleírtam amit elvileg kell, de a következő hibát írja ki:
"TypeError: changeColours() takes 1 positional argument but 2 were given"Tudna valaki segíteni, hogy mit rontottam el?
from tkinter import*
from math import log,log10
class Application:
def __init__(self):
"""A főablak constructora"""
self.root=Tk()
self.root.title('Színkódok')
self.drawResistor()
Label(self.root,text="Írja be az ellenállás értékét ohm-ban: ").grid(row=2)
from tkinter import*
from math import log,log10
class Application:
def __init__(self):
"""A főablak constructora"""
self.root=Tk()
self.root.title('Színkódok')
self.drawResistor()
Label(self.root,text="Írja be az ellenállás értékét ohm-ban: ").grid(row=2)
#Button(self.root, text='Mutat', command=self.changeColours).grid(row=3,sticky=W) #Korábban ezzel működött
self.entry=Entry(self.root,width=14)
self.entry.bind("<Return>",self.changeColours) #Ezt írtam csak bele
self.entry.grid(row=3)
#színkódok:
self.cc=['black','brown','red','orange','yellow','green','blue','purple','grey','white']
self.root.mainloop()
def drawResistor(self):
"""Vászon ellenállás modellel, amin három színes csík van"""
self.can=Canvas(self.root,width=500,height=200,bg='light blue')
self.can.grid(row=1,pady=5,padx=5)
self.can.create_line(10,100,490,100,width=3)
self.can.create_rectangle(130,60,360,140,fill='beige',width=2)
#három színes csík (feketék alapból)
self.line=[] #listában tároljuk őket
for x in range(150,250,48):
self.line.append(self.can.create_rectangle(x,60,x+30,140,fill='black',width=0))
def changeColours(self):
"""A beírt értéknek megfelelő három szín kiiratása"""
self.v1ch=self.entry.get() #A get() metódus egy stringet ad vissza (ez a bekért adat)
try:
v=float(self.v1ch) #Ha sima float értéket írtunk be akkor ezzel működik
except:
err=1 #Nem numerikus adat
else:
err=0
if err==1 or v>1e11:
self.reportError() #Nem megfelelő érték
elif v<10:
li=[0]*3
li[1]=int(v+.5)
li[2]=int((v-int(v))*10+.5)
for n in range (3):
self.can.itemconfigure(self.line[n],fill=self.cc[li[n]])
else:
li=[0]*3
logv=int(log10(v)) #logaritmus egész része
ordgr=10**logv #nagyságrend
li[0]=int(v/ordgr) #egész rész
decim=v/ordgr-li[0] #tizedes rész
li[1]=int(decim*10+.5) #+0.5 a korrekt kerekítéshez
li[2]=logv-1
#a 3. szakasz színezése:
for n in range (3):
self.can.itemconfigure(self.line[n],fill=self.cc[li[n]])
def reportError(self):
self.entry.configure(bg='red') #mező hátterének színe
self.root.after(1000,self.emptyEntry) #1 sec után törölni
def emptyEntry(self):
self.entry.configure(bg='white') #fehér háttér vissza
self.entry.delete(0, len(self.v1ch)) #karakterek törlése
####Főprogram###
f=Application()
Új hozzászólás Aktív témák
- Ilyet se látunk minden nap, már füstölt a GeForce, de a játék még futott
- Milyen egeret válasszak?
- Autós topik
- Windows 11
- Milyen légkondit a lakásba?
- Trollok komolyan
- Kínai és egyéb olcsó órák topikja
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Call of Duty: Black Ops 7
- Vigneau interaktív lokálblogja
- További aktív témák...
- Apple iPhone 14 Pro 128 gb Mélylila - Hibátlan állapot!
- NetApp StorageGrid SG5712 (NAJ-1502)- adattároló hdd nélkül -3 db
- HPE BladeSystem c7000 Enclosure (403321-B22)-without Blades -
- Intel Modular Server Chassis MFSYS25 adattároló --4x900GB HDD + 7x600GB HDD
- EMC 15-slot Disk Array Enclosure for DataDomain -15x3TB HDD- Adattároló - 2db van
- 137 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 - 4 ÉV GARANCIA!
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3971, 94% Akkumulátor
- iPhone 11 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS4346, 100% Akksi
- Samsung Galaxy S22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Asus VivoBook W11 Laptop
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest

