- Volkswagen ID.7 menetpróba
- Nothing Phone (2) - több, mint elsőre látszik
- Huawei P40 lite - kényszerpályán
- Google Pixel 6/7/8 topik
- iPhone topik
- Különleges kameraszettet kapott a Huawei Pura 70 Ultra
- Macrodroid
- Apple iPhone 15 Pro Max - Attack on Titan
- MIUI / HyperOS topik
- Samsung Galaxy Watch6 Classic - tekerd!
Új hozzászólás Aktív témák
-
pbalintka
csendes tag
válasz cadtamas #950 üzenetére
A circle függvényed nem tér vissza semmivel, csak kört rajzol. Igy amikor törölni szeretnéd a mouth-t akkor gyakorlatilag annak értéke semmi (None típus).
Írj egy return-t a függvényed végére, hogy adja vissza az object-et!
def circle(can,x,y,r,color="white"):
"A <can> vásznon egy <r> sugarú kör rajza <x,y>-ban."
return can.create_oval(x-r,y-r,x+r,y+r,outline=color)[ Szerkesztve ]
-
EQMontoya
veterán
válasz pbalintka #952 üzenetére
Egy integer 24 byte-ot foglal le, míg a None csak 16-ot. Nem sok de, nagyobb programnál számítani fog.
No ezt azért gondoljuk már át még kétszer.
Kis olvasnivaló, ezt a részt ajánlom figyelmedbe:
The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1. I suspect the behaviour of Python in this case is undefined. :-)
Pythno3-ban már kicsit másképp működik, de az, hogy pontosan hány int(1) objektumod van a rendszerben, illetve hány referenciád azokra, az közel sem olyan triviális, mint ahogy azt Móricka gondolta.
Same rules apply!
-
Bazs87
tag
válasz cousin333 #942 üzenetére
Köszönöm a reakciót cousin333!
A 3.3-at azért használtam, mert a gépemre épp az volt letöltve.
Közben megtaláltam hogyan kell cmd-ben libet installálni, de az általad javasolt megoldás sokkal szimpatikusabb.
Te milyen verziót használsz/javasolsz?Első körben idle 2.7-tel fel is tudtam installálni a libet, de hibára futott a rossz verzió miatt. Azt mondták, hogy a 3-asat használjam, de melyiket? A pip installálás is a win cmd-ben megy?
A "nagy" pythonos tervek alábbhagytak, most már csak az a cél, hogy ez a lib menjen. (perpill a setuptool és egy másik lib körhivatkozást hoztak létre és egymást kérik az install teljesítéséhez).
Felrakom az általad javasolt python verziót, no meg a PyPi-t és szerencsét próbálok még egyszer.
Egy elvileg 5 perces problémával szenvedek napok óta, velem van a gond?Köszi előre is!
-
Üdv!
Chromiumot szeretnék fordítani, de a gn tool, ami python2.7 alapú, nem akar elindulni...
Itt található a kódja. És ez maga a hiba:
Traceback (most recent call last):
File "/home/pisti/Asztal/depot_tools/gn.py", line 38, in <module>
sys.exit(main(sys.argv))
File "/home/pisti/Asztal/depot_tools/gn.py", line 33, in main
return subprocess.call([gn_path] + args[1:])
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format errorMit tudok ezzel kezdeni?
Köszi!
Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!
-
cousin333
addikt
Szerintem nyugodtan töröld a mostani Pythont, és tedd fel helyette a legfrissebbet: Python 3.6.0. A gyári könyvtárak nyilvánvalóan támogatottak (lásd urllib), ahogy a kérdéses külső modulok is:
- Requests
- Beautiful SoupHa feltetted a friss Pythont, akkor elvileg lesz parancssorból működő pip-ed is, amivel a fent említett modulokat is telepítheted, az esetleges függőségeikkel együtt:
C:\> pip install requests beautifulsoup4
A PyPi-t nem tudod feltenni, mert az csak a hivatalos honlap a külsős Python modulok számára. Azért említettem, mert a pip elvileg minden csomagot fel tud tenni, amit itt megtalálsz, de ez inkább a későbbiekre szól.
[ Szerkesztve ]
"We spared no expense"
-
Bazs87
tag
válasz cousin333 #959 üzenetére
Értem. Akkor a legújabb python repül rá fel. A pippel pedig megpróbálom a libet végre működésre bírni.
Az előbbi leírásaitok alapján tisztában kéne lennem, hogy melyik lib melyik verzióhoz tartozik, mik a követelményei stb. Ennek hol tudok utánanézni, van valamilyen gyűjtőoldal, vagy googli megmondja nekem x hét keresés meg kellemetlenség után?
Nem tudjátok, a githubon szerepelhet valahol a telepített teszt/fejlesztőrendszer leírása (a libet pontosan ezzel az idle verzióval, ezekkel a libverziókkal ilyen oprendszerrel installálta és tesztelte a készítője)?
Köszönöm!
-
cousin333
addikt
A már említett PyPi oldalon rákeresve, vagy a modul honlapján le van írva, hogy éppen mivel kompatibilis. Nem biztos, hogy ki van írva az összes jó változat, legtöbbször pl. 2.7+ és 3.3+ jelölés szerepel. A legfontosabb, hogy a 2-es és 3-as verziókat kell külön kezelni. Sok modul ráadásul csak gyári függvényeket használ, avagy "pure Python", az ilyeneknél nem szokott gond lenni a kompatibilitással. A Githubon szoktak lenni readme fájlok, de a kisebb projektek általában gyengébben dokumentáltak, beleértve a kompatibilitást is. Általában ami támogatja a Python 3-at az fut a legfrissebb változattal is, legfeljebb nem használja ki az újdonságokat.
Szerintem egy kicsit túlpörgöd ezt a témát, ami neked kell, az benne van az alaptelepítésben is. Ahogy írtam, a pip remekül használható külsős modulok telepítésére, automatikusan a kívánt verziót teszi fel (pl. 32 vs 64 bit), a függőségekkel együtt. A githubos Home asistant könyvtárad is fel tudod így tenni:
C:\> pip install pyhs100
[ Szerkesztve ]
"We spared no expense"
-
Lacc
aktív tag
Sziasztok!
Na átnéztem egy kis tutorial a float, Decimal és Fraction témaköréből, tanulságos. De nekem nem úgy műkődik a Python kódom, ahogy a könyvben.
Könyvben:
>>> Fraction(19/155)
Fraction(8832866365939553, 72057594037927936)
>>> Decimal(19/155)
Decimal('0.12258064516129031640279123394066118635237216949462890625')Nálam:
>>> Fraction(19/155)
Fraction(0, 1)
>>> Decimal(19/155)
Decimal('0')Na most akkor ez hogyan lehetséges, hogy én rossz kerekített értékeket kapok?
Tökmindegy, hogy Python 2.7 vagy Python 3.5, ugyanez az eredmény. A Fraction és Decimal osztályok importálva vannak, különben hibával elszállna a program. -
cousin333
addikt
Nálam a 3.6 van telepítve és jól működik.
Nálad mit ad vissza a decimal.getcontext() függvény? Nálam:
Out[6]: Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, ca
pitals=1, clamp=0, flags=[FloatOperation], traps=[InvalidOperation, DivisionByZe
ro, Overflow])"We spared no expense"
-
cousin333
addikt
Mert csak a Decimal-t importáltad a decimal modulból. Írd ezt és akkor lesz:
In [1]: import decimal
In [2]: decimal.Decimal(19/155)
Out[2]: Decimal('0.12258064516129031640279123394066118635237216949462890625')
In [3]: decimal.getcontext()
Out[3]: Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, ca
pitals=1, clamp=0, flags=[FloatOperation], traps=[InvalidOperation, DivisionByZe
ro, Overflow])[ Szerkesztve ]
"We spared no expense"
-
Lacc
aktív tag
válasz cousin333 #965 üzenetére
Aha, de akkor is érdekes, hogy nem az a szám, aminek lennie kellene, az még mindig csak egy '0'
>>> import decimal
>>> decimal.Decimal(55/165)
Decimal('0')
>>> decimal.getcontext()
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[InvalidOperation, Overflow, DivisionByZero])[ Szerkesztve ]
-
Bazs87
tag
válasz cousin333 #961 üzenetére
A végső megoldásként sikerült megoldanom a telepítést a 3.6-tal tesztként. A lib működik.
A mySQL legújabb konnektora viszont 3.4-hez jó, ezért visszaléptem kettőt és nagy szerencsémre úgy is működőképes a lib.
A pypet nem sikerült működésre bírnom, ezért maradt a cmd-s installálás.Köszönöm a segítséget!
-
cousin333
addikt
válasz EQMontoya #968 üzenetére
Én is erre gondoltam először, de a #966-ban egyértelműen ott van, hogy
prec = 28
(ez az alapértelmezés). Amit én írtam, az meg nem fog működni, mert hibásan adtam meg. De ha jó lenne, akkor sem menne, mert egy másik config esetében sincs semmi a flags-nél, mégis jó. Aclamp = 1
-re gondoltam még, mint lehetséges ok, de az sem az. Szóval most már nem tudom, mi van...[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
Hogyan képzelted a Machine Learning-et? Kézzel lekódolod az alapoktól és futtatod? Mert léteznek modulok külön erre a célra. Nem tudom, hogy azok belsőleg milyen pontosságot használnak, vagy egyáltalán milyen adattípusokat, de csak jól működnek, ha erre lettek kitalálva...
[ Szerkesztve ]
"We spared no expense"
-
Lacc
aktív tag
válasz cousin333 #974 üzenetére
Odáig még nem jutottam el, jó lenne az alapokat is megismerni, hogy később legalább tudjam, hogy mégis mi az egész alapja. Később valszeg úgy is modulokat fogok használni, ha jól gondolom a NumPy a leghíresebb erre.
Előbb még Python, és Algoritmusok - le kell porolni . Ezekre van egyelőre konkrét tervem is. ML-re csak annyi, hogy az is kell, de lehet ehhez majd egy Coursera.org féle kurzus alapján készülök, ez még annyira nem konkrét, hogy pontosan miből és hogyan fogok tanulni.
Ez csak szép lassan fog megvalósulni. Munka, Egyetem MSc - levelezőn, Nyelvtanulás és egyéb. -
cousin333
addikt
A NumPy egy sokkal alapvetőbb funkcionalitást nyújtó és szélesebb körben használható modul. Az ML-re léteznek sokkal specifikusabb kiegészítők. A legismertebb talán a scikit-learn. Ezt találtam a Youtube-on: [link], ha esetleg érdekel.
[ Szerkesztve ]
"We spared no expense"
-
Lacc
aktív tag
Kolléga próbálta, könnyedebb, mint a Django, nincsen benne például template kezelő rendszer, meg admin felület. Django fullframework, a Flask inkább microframework.
Django sok mindent készen ad, a Flask esetében neked kell megírnod, cserébe nincs tele sok "felesleges kóddal", amit te úgy sem használnál ki.
Ha gyorsan kell valami és kis projektekről beszélünk, akkor Flask, gyorsabban is meglehet tanulni, illetve ha szereted magad csinálni a dolgokat (admin felület, user login)
Én inkább mondanám a Djangot, főleg akkor ha szeretnél vele dolgozni, munkát vállalni. (Ugyanis a Django a legnépszerűbb) -
eames
tag
Sziasztok!
Szeretnék segítséget kérni. Pythont tanulok, önerőből, szóval nem igazán van tétje, de nagyon érdekelne a megoldás.
Szóval a feladat: van egy két oszlopból álló tábla, .txt-ben. Film címek és a rendező, pl: La La Land;Damien Chazelle. Nekem loadolnom kell ezt a fájlt és megszámolni, egy-egy rendező hány filmet rendezett a listából. Odáig eljutok, hogy minden egyes szót megszámol ami a táblában van, de nem tudom hogy kéne, hogy csak a ;utáni karaktereket nézze és összesítse...? Vagy rosszul gondolkozom?
-
Lacc
aktív tag
Szia.
Split függvényt kell meghívnod a stringen. Nem space, hanem a pontos veszőt teszed meg amely mentén a függvénynek fel kell darabolnia a stringet.
split(“;”)
x = ‘blue,red,green’
x.split(“,”)
>>>
[‘blue’, ‘red’, ‘green’]Aztán csak megszámolod a lista elemeit.
Forrás link.
[ Szerkesztve ]
-
cousin333
addikt
Én kezdőként így csinálnám:
megnyitom a fájlt olvasásra (kulcsszó: open, with)
soronként beolvasom a fájlt egy listába (pl. list comprehension, strip)
készítek egy üres szótárat (dictionary)
soronként végigmegyek a listán (for)
szétválasztom a címet és a rendezőt (split, ahogy már előttem írták)
ha a rendező még nem szerepel a szótárban,
akkor hozzáadom a nevét a szótárhoz egy 1-es számmal, vagy a film címével (listában)
ha a rendező szerepel a szótárban,
akkor hozzáadok a név melletti számhoz 1-et, vagy a név melletti listához a filmcímetEz kb. annyi kód, amennyivel fentebb leírtam, minden sorhoz egy kódsor tartozik. Az első módszerrel (a vagy előtt) a rendező által rendezett filmek számát kapod, az alternatív megoldással meg azt, amit most írtál, hogy ki szeretnéd hozni.
SPOILER! A kód kb. így nézne ki az első módszerrel (filmszámolás):
with open('myfile.txt', 'r') as f:
filmlista= [line.strip('\n ') for line in f if line != '\n']
osszesites = {}
for alkotas in filmlista:
cim, rendezo = alkotas.split(';')
if rendezo in osszesites:
osszesites[rendezo] += 1
else:
osszesites[rendezo] = 1És a for ciklus így nézne ki a másodikkal:
for alkotas in filmlista:
cim, rendezo = alkotas.split(';')
if rendezo in osszesites:
osszesites[rendezo].append(film)
else:
osszesites[rendezo] = [film]Remélem működnek, nem teszteltem le.
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz EQMontoya #986 üzenetére
Tudom, ismerem, de azért köszönöm a kiegészítést. Az már mondjuk inkább Python level 2 szintű megoldás... . Plusz kell hozzá még egy sor:
from collection import defaultdict
Összességében az eredeti 9 sor kódból lett 7. A level 3 megoldás meg már csak 3 soros:
import pandas as pd
data = pd.read_table('myfile.txt', sep=';', names=['Film', 'Rendezo'])
data.Rendezo.value_counts()"We spared no expense"
-
eames
tag
válasz cousin333 #987 üzenetére
Nagyon köszönöm neked is és EQMontoyanak is a segítséget!
Végül ezzel csináltam meg:
with open('myfile.txt', 'r') as f:
filmlista= [line.strip('\n ') for line in f if line != '\n']
osszesites = {}
for alkotas in filmlista:
cim, rendezo = alkotas.split(';')
if rendezo in osszesites:
osszesites[rendezo] += 1
else:
osszesites[rendezo] = 1Tökéletesen működik!
-
l.skywalker
félisten
Sziasztok. 2 hónapja kezdtem el Pythont tanulni az Udemy-n. Abszolút önszorgalomból, mert rádöbbentem, hogy ezzel szeretnék foglalkozni, egyébként szolgáltatás-menedzsment területen vagyok jómunkás. Most találtam rátok, remélem majd hasznos tagja lehetek a fórumnak itt is!
Nem szabad félnem. A félelem az elme gyilkosa. A félelem a kis halál, mely teljes megsemmisüléshez vezet. Szembenézek félelmemmel.
-
slyder81
tag
Hali.
Látom nem túl aktiv ez a fórum, de megpróbálom, hátha tud valaki gyógyírt a problémámra.
Elolvastam az egész fórumot, de sajna látom a tkinterrel nem túl sokan foglalkoznak, de hátha mégis lesz valakinek valami ötlete. Pár éve kezdtem pytonkodni, de viszonylag nagy kihagyásokkal. Az angolom sajna nem túl erős,.
Sikerült összedobnom egy viszonylag hosszadalmas kódot, lényegeben egy 2 személyes táblás társasjáték. El is döcög a szkriptecske de van egy problémám.
Adott egy ablak amiben egy canvas ra betöltöttem egy gif kiterjesztésű képet ( tudom roszab a minősége, de a celnak megfelel, a projekt már túl előrehaladott volt már mikor szembesültem hogy vaszonra nem lehet jobb minőségű képet alkalmazni). A képre rajzoltam két szines kört, amit a képet tartalmazó canvasból származtattam le(ugye az véget, hogy a képen legyen,ezek ugyanis a figurák). Utánna jött a feketeleves. Hosszú órákon át tartó kinylódás után sikerült hozákötnöm az egér eseményhez ezt a két szines köröcskét(ha a kör fölé húzom az egér mutatót s lenyomott bal gombal odébb húzom, akkor a kiválasztott kör mozog, mindaddig, még el nem engedem a gombot). Na szóval az lenne a gond, hogy ha véletlenül a köröcske mellé kattintok(ugye ez esetben a képre) s megmozditom az egeret, akkor a képet elmozditom a vásznon s a kereten kivülre kerül a kép egy resze. Ez számomra nem világos, mert a kép mérete és a vaszon mérete teljessen egyforma.
Átlátszó vászonnal pl meg tudnám oldani, de sajnos ilyen opció nincs.
Ha le tudnám fixálni a meglévő vaszon szélét, hogy a képet ne tudjam elhúzni, az is kielégitő megoldás lenne.
Utólag rátaláltam a Label opcióra, ami még jobban is megfelelne(a képformátumok miadt) , de itt viszont az a gondom, hogy egy label felületre már nem tudok canvast tenni, mivel ha a meglévőből származtatom akkor a label felület alá kerül.
Mivel már üzemel az egész projekt, nem szivessen irnám át az egész kódot(össz-vissz van par 100 sor)
Esetleg valkinek valami ötlete?
Ha hazaérek fel tudom tenni a kérdéses kódrészletet. -
slyder81
tag
válasz slyder81 #990 üzenetére
Itt a kód részlet(természetesen valami képet be kell rakni a kód mappájába,alap.gif helyett):
#-*- coding:Utf-8 -*-
from Tkinter import *
from random import randrange
import random
class Draw(Frame):
def __init__(self):
Frame.__init__(self)
#Vászon létrehozása, kép betöltése, megjelenitése
self.c = Canvas(self, width =1292, height =916, bg ='grey', bd =2, relief =SOLID)
self.photo = PhotoImage (file ='alap.gif')
self.item = self.c.create_image(640, 450, image=self.photo,activeimage= None)
self.c.grid(row =1, column =1, rowspan=6, padx= 0, pady= 5)
#A szines körök kezdőpoziciója, létrehozása
x1, y1,x2,y2 = 100, 100,150,50
x3, y3,x4, y4 = x1 ,y1,x2, y2+100
self.c.create_oval(x1, y1,x2,y2, fill ='red')
self.c.create_oval(x3, y3,x4, y4, fill ='blue')
#Az egér 'érzékelése'
self.c.bind("<Button-1>", self.mouseDown)
self.c.bind("<Button1-Motion>", self.mouseMove)
self.c.bind("<Button1-ButtonRelease>", self.mouseUp)
self.grid()
# Az egér események definiállása
def mouseDown(self, event):
self.currObject =None
self.x1, self.y1 = event.x, event.y
self.selObject = self.c.find_closest(self.x1, self.y1)
self.c.itemconfig(self.selObject,width =3)
self.c.lift(self.selObject)
def mouseMove(self,event):
x2,y2 =event.x, event.y
dx, dy =x2 -self.x1, y2 -self.y1
if self.selObject:
self.c.move(self.selObject, dx, dy)
self.x1, self.y1 =x2, y2
def mouseUp(self, event):
if self.selObject:
self.c.itemconfig(self.selObject,width =1)
self.selObject =None
if __name__ =='__main__':
Draw().mainloop() -
nagyúr
üdv, a topicnak!
tudja valaki, hogy a pip honnan szedi a compiler pathokat? egész pontosan a c++ fordítóét. cx_Oracle modullal kell dolgoznom, és ezt le kell fordítgatnom, mert a fejlesztője ritkán updateli a python új alverzióihoz. 3.4hez van, 3.6hoz már nincs. a hiba, hogy a cl.exe hiányára hivatkozva leáll a pip install (pip install cx_Oracle). felraktam hozzá a 14.xx visual c++ runtimeot, de nem változott semmi. a vicc, hogy még akkor is sem találja a cl.exe-t ha ugyanabból a könyvtárból indítom a pipet, ahol van.
win10, py3.6.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
cadtamas
tag
válasz slyder81 #991 üzenetére
Én ugyan nem vagyok szakértő a témában, nagyjából ugyanott tartok a programozásban, mint te, de az a probléma, hogy mint objektum van behelyezve a háttér gif a vászonra.
Ne adj neki nevet és akkor nem lesz szerintem gond.Nem tudom kipróbálni, de én valami ilyennel próbálkoznék:
class Draw(Frame):
def __init__(self):
Frame.__init__(self)
#Vászon létrehozása, kép betöltése, megjelenitése
self.c = Canvas(self, width =1292, height =916, bg ='grey', bd =2, relief =SOLID)
PhotoImage (file ='alap.gif') #Ha nem adsz neki nevet, nem fogja megfogni szerintem.
self.item = self.c.create_image(640, 450, image=self.photo,activeimage= None)
self.c.grid(row =1, column =1, rowspan=6, padx= 0, pady= 5)
#A szines körök kezdőpoziciója, létrehozása
x1, y1,x2,y2 = 100, 100,150,50
x3, y3,x4, y4 = x1 ,y1,x2, y2+100
self.c.create_oval(x1, y1,x2,y2, fill ='red')
self.c.create_oval(x3, y3,x4, y4, fill ='blue')
#Az egér 'érzékelése'
self.c.bind("<Button-1>", self.mouseDown)
self.c.bind("<Button1-Motion>", self.mouseMove)
self.c.bind("<Button1-ButtonRelease>", self.mouseUp)
self.grid()
# Az egér események definiállása -
cadtamas
tag
válasz cadtamas #993 üzenetére
Eh, hülyeséget beszélek.
Ha kitörlöd a hivatkozást a következő sor hibát fog kiadni.Akkor viszont én arrafelé tapogatóznék, hogy a mozgatható elemeket beletenném egy listába és hozzáadnék egy sort a mouseDown() metódushoz, hogy csak akkor működjön ha az objektum eleme a a listának.
-
cadtamas
tag
Na, ez lesz most az utolsó.
Találtam ezt a tag-es megoldást.
Remélem működni fog:#-*- coding:Utf-8 -*-
from Tkinter import *
from random import randrange
import random
class Draw(Frame):
def __init__(self):
Frame.__init__(self)
#Vászon létrehozása, kép betöltése, megjelenitése
self.c = Canvas(self, width =1292, height =916, bg ='grey', bd =2, relief =SOLID)
self.photo = PhotoImage (file ='alap.gif')
self.item = self.c.create_image(640, 450, image=self.photo,activeimage= None)
self.c.grid(row =1, column =1, rowspan=6, padx= 0, pady= 5)
#A szines körök kezdőpoziciója, létrehozása
x1, y1,x2,y2 = 100, 100,150,50
x3, y3,x4, y4 = x1 ,y1,x2, y2+100
self.c.create_oval(x1, y1,x2,y2, fill ='red', tags='kor') #adunk hozzá egy tag-et
self.c.create_oval(x3, y3,x4, y4, fill ='blue', tags='kor')
#Az egér 'érzékelése'
self.c.bind("<Button-1>", self.mouseDown)
self.c.bind("<Button1-Motion>", self.mouseMove)
self.c.bind("<Button1-ButtonRelease>", self.mouseUp)
self.grid()
# Az egér események definiállása
def mouseDown(self, event):
self.currObject =None
self.x1, self.y1 = event.x, event.y
self.selObject = self.c.find_closest(self.x1, self.y1)
sel.tags = self.c.gettags(self.selObject) #Kiolvassuk a tag-et
if self.tags=='kor':
self.c.itemconfig(self.selObject,width =3)
self.c.lift(self.selObject)
def mouseMove(self,event):
x2,y2 =event.x, event.y
dx, dy =x2 -self.x1, y2 -self.y1
if self.selObject:
self.c.move(self.selObject, dx, dy)
self.x1, self.y1 =x2, y2
def mouseUp(self, event):
if self.selObject:
self.c.itemconfig(self.selObject,width =1)
self.selObject =None[ Szerkesztve ]
-
slyder81
tag
válasz cadtamas #995 üzenetére
De jó, végre valami nyom.
Sajnos nem jó, de a nyom igen. Csak meg kell találni a megfelelő alkalmazási módot.
Ha aself.tags
listát print utasitással kiolvasás után kiirattatom, akkor ha a körökre katintok akkor ('kor', 'current') tartalmat kapok. De ha a képre akkor csak('current',) kapok. A baj az hogy a kép még mindig mozog. -
cadtamas
tag
válasz slyder81 #996 üzenetére
Próbáld meg ezzel:
def mouseDown(self, event):
self.currObject =None
self.x1, self.y1 = event.x, event.y
self.selObject = self.c.find_closest(self.x1, self.y1)
sel.tags = self.c.gettags(self.selObject) #Kiolvassuk a tag-et
if self.tags=='kor': #talán vedd hozzá hogy 'current' ha nem működik rendesen
self.c.itemconfig(self.selObject,width =3)
self.c.lift(self.selObject)
else:
self.currObject =None #így már elvileg nem fogja mozgatni[ Szerkesztve ]
-
slyder81
tag
válasz cadtamas #997 üzenetére
Kössz. Úgy látszik egy rugóra jár az agyunk. Igy sem ment. De neked hála, megtaláltam a megoldást.
A self.item sorba szintén beraktam egy tags ='ed' részt s kiegészitettem igy a kódot:def mouseDown(self, event):
self.currObject =None
self.x1, self.y1 = event.x, event.y
self.selObject = self.c.find_closest(self.x1, self.y1)
self.tags = self.c.gettags(self.selObject)#Kiolvassuk a tag-et
print self.tags
if self.tags ==('kor', 'current'):
self.c.itemconfig(self.selObject,width =3)
self.c.lift(self.selObject)
if self.tags == ('ed', 'current'):
self.selObject =NoneIgy már megy a dolog tökéletesen. Hálás köszönet.
[ Szerkesztve ]
-
slyder81
tag
Az előző skript alapján, hogy tudnám az ablak nevét megváltoztatni "tk" helyett az a szöveg amit én szeretnék?
Megoldva.
[ Szerkesztve ]