- Milyen program, ami...?
- A pápa egyre jobban tart a romlott AI veszélyeitől
- Microsoft Excel topic
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Windows 10
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Otthoni hálózat és internet megosztás
- Milyen routert?
- Az USA nem akarja visszafogni Kína növekedését
- Xiaomi AX3600 WiFi 6 AIoT Router
Új hozzászólás Aktív témák
-
#82595328
törölt tag
Valaki elmagyarázná nekem, hogy a return parancsot miért kell mindenképpen függvénybe rakni?
Miért ne lehetne belerakni az értékét pl: egy változóba, vagy egyéb módon használni? Ez valahogy nem világos. -
#82595328
törölt tag
válasz cousin333 #467 üzenetére
De nem működik, vagy én csinálok valamit rosszul. Azt értem, hogy mire való. Viszont próbáltam shell-ben pár parancsot, és nem megy egyik sem.
De azt hiszem így egyszerűbb, ha mutatok példákat:Ez működik:
>>> def xecs(x):
return x>>> print (xecs(2))
2Ezek meg nem. De miért nem?
>>> x=1
>>> return x
SyntaxError: 'return' outside function>>> x=1
>>> a= return x
SyntaxError: invalid syntax>>> x=1
>>> print (return x)
SyntaxError: invalid syntax -
#82595328
törölt tag
válasz sztanozs #473 üzenetére
"Szerintem olvasgass egy kicsit programozás / programtervezés alapokról, ha a return utasítást, vagy a függvények működését (sem) érted."
Szerinted éppen mit csinálok?
Most ismerkedem a return paranccsal és a függvény készítéssel. Mivel az már ment, ilyenkor a következő lépés a kísérletezés. Azaz a tanultak eltérő módon való használata, és itt akadtam fel. Mert nem volt egyértelmű, hogy a return csak függvényen belül lehet.
Ez volt a kérdésem lényege, hogy a return csak függvényen belül használható? Mert a hibaüzenet alapján, amit kaptam ezt találtam a neten, de nem volt teljesen egyértelmű. -
#82595328
törölt tag
Újabb kérdés. Rátaláltam a python példaprogramokra, és ezt a függvényt nem értem teljesen.
def bottle(n):
if n == 0: return "no more bottles of beer"
if n == 1: return "one bottle of beer"
return str(n) + " bottles of beer"Vagyis az a része már világos, hogy ha n==0 vagy 1, akkor a " return str(n) + " bottles of beer"" már nem hajtódik végre, mert az első return után kilép a függvényből a program. Az is többé kevésbé világos, hogy azért nem elif és else, mert akkor nem lépne ki a függvényből a return után. Bár ezt még kipróbálom. Ami nem világos az ez a formátum:
if n == 0: return "no more bottles of beer"
Ez így miért helyes?Mert szerintem így kellene kinéznie:
if n == 0:
return "no more bottles of beer"Persze így egyszerűbb és olvashatóbb a kód. Csak ugye ":" után új sornak kellene következnie, és behúzásnak.
-
#82595328
törölt tag
Egy for ciklust szeretnék, ami így nézne ki:
for x in range (dátum1, dátum2):
Azaz annyiszor fusson le, ahány nap van két dátum között.
azaz így is jó lenne:
for x in range(dátum2-dátum1):Nézegettem a time és a calendar modult, de nem láttam benne olyan funkciót, mint az excel-ben. Hogy a dátumot egy számmá lehetne alakítani.
Értelemszerűen az év, hónap,nap külön külön számmá alakítása nem jó, mert évváltásnál rossz eredmény születik.
20160101-20151231= ennek 1-nek kellene lenni és nem 8.870-nek.Tehát mondjuk a feladat, amit meg szeretnék oldani:
2015.12.15-2016.02.08 között kerestem 100 Ft-t. ? Ft-om van? -
#82595328
törölt tag
válasz cousin333 #506 üzenetére
Tehát ha jól értem, akkor ez a ciklus működni fog? Csak este tudom kipróbálni.
import datetime as dt
x = dt.date(2015, 12, 15)
y = dt.date(2016, 2, 08)
z = y-x
for x in range(z.days):
a += 100
print (a)"A fenti példádhoz miért van szükséged for ciklusra?"
Bocsánat kimaradt a mondatból a "minden nap". Tehát a példafeladat ez lenne:
2015.12.15-2016.02.08 között kerestem minden nap 100 Ft-t. Hány Ft-ot kerestem összesen? -
#82595328
törölt tag
válasz cousin333 #509 üzenetére
Igazad van és nincs. Jelen pillanatban tényleg elég lenne ciklus nélkül. De ez a ciklus csak a váza lesz majd egyszer valaminek. Most csak a megoldás érdekelt.
Mondjuk kiegészíteném a példafeladatot erre:
Dolgoztam 2015.12.15 - 2016.02.08-ig. Az órabér 10 Ft/h. Páratlan napokon 8, páros napokon 6 órát, 15-e után pedig dupla órabérért dolgoztam. Ezt én már nem tudnám megoldani ciklus nélkül.
De köszönöm még egyszer a segítséget! -
#82595328
törölt tag
Karakterkódolási problémám van.
Csináltam egy .csv fájlt Libreoffice Calc-ban. Ha az UTF-8 kódolást választom. Hiába szerepel a script elején a "# coding: utf-8" hogy UTF-8 az alapértelmezett kódolás. A beolvasott szövegben hibásak lesznek az ékezetes karakterek. Viszont ha a kelet-európai (ISO-8859-2) kódolást választom, akkor jó az import. Ezt nem igazán értem miért. A kérdésem pedig, hogy hogy tudnám helyesen UTF-8 kódolással beolvasni? -
#82595328
törölt tag
válasz cousin333 #567 üzenetére
Kicsi szűkítem a problémát:
A hiba Windows 10-en futtatott Libreoffice 5.1.1.3-ból UTF-8 kódolással exportált .csv fájl esetén jelentkezik, ha Windows 10-en Python 3.5 IDLE-vel próbálom futtatni a scriptet. Ami vicces, hogy a scripet linux alatt jól jelenik meg az ékezetes karakter.
A kód kb. ennyi. Legalábbis a lényegi része.with open ('Lista.csv') as f:
f.readline()
for sor in f:
sor=sor.strip().split(',')Windows alatt ezt kapom:
[['NĂ©vĂ\xad', '1'], ['NĂ©vű', '10'], ['NĂ©vö', '100']]Ez pedig a lista:
Néví,1
Névű,10
Névö,100 -
#82595328
törölt tag
válasz csaszizoltan #569 üzenetére
Köszönöm a segítséget! Ez nem oldotta meg.
Helyette a codecs modul lett a megoldás.
A kód így néz ki:
import codecs
with codecs.open ('Lista.csv','rU',encoding='utf-8')as f:
f.readline()
for sor in f:Így már működik Windows és Linux alól is.
-
#82595328
törölt tag
Egy olyan kérdésem van, hogy hogy tudok egyszerre 2 fájl-lal dolgozni. Az egyikből olvasni, a másikba írni.
Hogy érthető legyen itt egy példa feladat:
Azaz teszem azt van egy listám(forras.csv):
Név Összeg
Kis 1000
Nagy 500
Pici 200Beolvasom soronként listába, és mondjuk hozzáadok minden összeghez 10-t.
Név Összeg
Kis 1010
Nagy 510
Pici 210Aztán kiírom egy másik fájlba. Pl: cél.csv
Ezt így szerintem meg tudom csinálni.
A gondom az, hogy mi van akkor, ha a lista több 1.000 elemet tartalmaz? Mert akkor én úgy csinálnám, hogy:
1. Megnyitom olvasásra a forrás fájlt.
2. Megnyitom append-del a cél fájlt.
3. Elkezdem soronként beolvasni a forrásfájlt.
4. Elvégzem a műveletet.
5. Kiírom soronként a célfájlba.
5. Ha kész bezárom mindkét fájlt.Na ezt hogy kell csinálni?
Mert itt két (with) open-t kellene egymásba ágyazni. Lehet ilyet? -
#82595328
törölt tag
válasz cousin333 #631 üzenetére
Ha konkrét teendőt is írsz, akkor talán kódot is tudok adni hozzá.
Hát a konkrét teendő kb. ez :
Megtanulni pythonul + grafikus felület + sql szerver. A program lefordítása win-re és linuxra.A viccet félretéve a kódot már megírtam, amit le akarok futtatni, csak be kellene ágyaznom ebbe a programba. A gondom az, hogy beolvasott sor dátumot is tartalmaz, amit a datetime modulnak át kellene adnom.
A dátum ilyen formátumú lehet: 2016-01-01 vagy 2016.01.01
A dtdate függvénynek pedig így kellene előállítanom: (2016,1,1). Na ezt nem tudom, egyelőre hogy kell. Bár gondolom splittel,if '-' in dátum
spit1
elif '.' in dátum
spit2Igaz egyelőre azt sem tudom, hogy kell fájlba kiírni a végeredményt, de az menni fog, csak még nem jutottam el az anyagban odáig.
-
#82595328
törölt tag
válasz #82595328 #634 üzenetére
Köszönöm az eddigi segítséget. Eljutottam a fájlba írásig. Itt viszont olyan gondom van, hogy adott egy lista:
[[['Kis', '2015/1', '2015-01-02', '2016-01-10', 1000, 37, 1651], ['Nagy', '2015/2', '2016-02-02', '2016-02-06', 50000, 44, 2159], ['Törpe', '2015/3', '2016-03-03', '2016-04-08', 500000, 346, 197]]Ezt fájlba írtam az alábbi paranccsal:
with codecs.open('kesz.csv','w',encoding='utf-8') as f:
for i in range(len(lista)):
f.write((str(lista)+'\n'))Ez majdnem jó is lenne, csak ezt kapom:
['Kis', '2015/1', '2015-01-02', '2016-01-10', 1000, 37, 1651]
['Nagy', '2015/2', '2016-02-02', '2016-02-06', 50000, 44, 2159]
['Törpe', '2015/3', '2016-03-03', '2016-04-08', 500000, 346, 197]Viszont ezt szeretném. Az se baj, ha ',' helyett tab van.
Kis, 2015/1, 2015-01-02, 2016-01-10, 1000, 37, 1651
Nagy, 2015/2, 2016-02-02, 2016-02-06, 50000, 44, 2159
Törpe, 2015/3, 2016-03-03, 2016-04-08, 500000, 346, 197 -
#82595328
törölt tag
válasz csaszizoltan #653 üzenetére
Köszönöm!
Ez lett a vége:with codecs.open('kesz.csv','w',encoding='utf-8') as f:
for i in lista:
f.write(', '.join([str(elem) for elem in i]) +'\n')Legközelebb használd a Programkód gombot!
[ Módosította: Karma ]
-
#82595328
törölt tag
válasz csaszizoltan #656 üzenetére
Köszönöm még egyszer. Azzal végül is nem lehetett vádolni, hogy nem tudom, mit akarok.
-
#82595328
törölt tag
válasz cousin333 #655 üzenetére
"Na, milyen nagy élet lett itt hirtelen... "
Pedig az az igazság, hogy végre sikerült befejeznem életem első "programját" pythonban. Szóval egy darabig csendben leszek.
Majdnem 100 sor lett. Még egy pici grafikus felületet is gyártottam(átvettem valahonnan) neki. Igaz látszik, hogy nagyon kezdetleges, tele van gyerekbetegségekkel, de kész van. Az alap problémát megoldja.A canvas modult megjegyzem. Bár egyelőre az osztályok jelentik számomra a következő lépést. Modulból így is épp eleget használtam. Viszont osztályok nélkül nem tudok tovább lépni.
-
#82595328
törölt tag
Egy nagyon érdekes (számomra nagyon kellemetlen) problémába futottam bele.
A történet:
Írtam egy kisebb programot, ami egy tabulátorral elválasztott szövegfájlból beolvassa sorokat, kiválaszt belőle elemeket, berakja egy listába, azt pedig kiírja egy másik fájlba. Igazából hobbiból, de munkahelyre. A programot Windows 10 írtam, hibátlanul lefutott. Lefordítottam. A munkahelyemen lefuttattam Windows 7-en. Nem működött, vagyis kimaradtak sorok. Jó. Akkor csináljuk másképp. Átírtam ';'-vel elválasztott .csv-re. Otthon hibátlanul működik Windows 10-n. Munkahelyen megint nem. Megint kimaradnak (azt hiszem) ugyanazok a sorok. Először azt gondoltam, hogy a lefordított .exe fut valami hibára, de ezt így nehéz tesztelni, hogy nincs hibaüzenet, ezért tegnap otthon felraktam a Windows 7-t. A hiba .py fájl futtatásakor is jelentkezett. Következő ötletem az volt, hogy a hibakezelés miatt a listaelem változó nem jön létre. Tévedtem, létrejön. Eddig jutottam tegnap. Az a gond, hogy innentől már csak 2 helyen lehet hiba, és egyik sem a programom hibája.
1. Az append fut hibára
2. A kiírás fut hibára.
Ezt még kiderítem.
A kérdésem az, látott már valaki ilyet? Hogy ugyanaz a program ugyanazt a fájlt beolvasva Windows 10-n eltérő eredményt ad mint Windows 7-n?
Ja és nem kódolási hiba. utf-8-cal is ugyanezt csinálja.foLista = []
with open(name, 'r',encoding="latin-1")as f:
for sor in f:
try:
sor = sor.strip().split(';')
if sor[0] == 'EMPLOYEE:':
neve = sor[4].strip().split(',')
vezeteknev = neve[1]
keresztnev = neve[0]
nev = (vezeteknev+' '+keresztnev)
if sor[0][0] == '2' and len(sor[9]) == 0:
datum = sor[0]
if float(sor[12][-1]) >= 0:
cegnev = sor[0]
kezdes = sor[8]
vege = sor[10]
orak = sor[12]
megjegyzes = sor[13]
listaelem= (nev, datum, cegnev, kezdes, vege, orak, megjegyzes)
foLista.append(listaelem)
except:
continue
lista = list(foLista)
with open('kesz.csv', 'w', encoding="latin-1") as f:
for i in lista:
f.write(';'.join([str(elem) for elem in i]) + '\n')[ Szerkesztve ]
-
#82595328
törölt tag
válasz #82595328 #876 üzenetére
Közben megoldottam, hátha valakit érdekel.
A probléma az volt, hogy a
listaelem= (nev, datum, cegnev, kezdes, vege, orak, megjegyzes)
változóba bekerült megjegyzés string néha " is tartalmazott azaz így nézett ki:
' "szöveg' és ez meghülyítette a .join-t. Mondjuk még mindig fura, hogy Win7-n ez miért baj Win10-n meg miért nem. Na mindegy, javítottam az importot. Így már működik.[ Szerkesztve ]
-
#82595328
törölt tag
Egy kis segítséget kérnék python öröklés, alosztály témában:
Próbáltam írni, egy kisebb programot, amivel az öröklést tesztelném.
A cél az lenne, hogy bekérek 2 számot, amit értéket adna egy osztálynak, majd az egyiket felülírnám az alosztállyal. De sehogy se működik.class Egy():
def __init__(self,egyik=1,masik=2):
self.egyik = egyik
self.masik = masik
def szorzat(self,egyik,masik):
return self.egyik * self.masik
class Ketto(Egy):
def __init__(self,egyik,masik):
self.masik = masik
def szorzat(self,egyik,masik):
return self.egyik * self.masik
a = int(input('Adj egy számot!'))
b = int(input('Adj még egy számot'))
egyke = Ketto(b,a)
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat()) -
#82595328
törölt tag
válasz cousin333 #1252 üzenetére
Köszönöm a válaszokat, Igazából egyik sem az, amit szeretnék. Azt hiszem, nem voltam teljesen világos.
Valójában az osztályok egyik előnyét akartam kipróbálni, hogy hogy tudok egy osztályt felhasználva létrehozni egy új osztályt. Azaz a régi osztályt megtartani, de egy új osztállyal kiegészíteni vagy a mostani esetben felülírni a régi osztály attribútumait és metódusait.
Azaz elsőkörben létrehoztam egy osztályt:
class Egy():
def __init__(self, egyik=1, masik=2):
self.egyik = egyik
self.masik = masik
def szorzat(self):
return self.egyik * self.masikEbben ugye van attribútum, és metódus is.
Ezt kiegészítettem egy példányosítással és adatbekéréses értékadással.
a = int(input('Adj egy számot!'))
b = int(input('Adj még egy számot'))
egyke = Egy(a, b)A végén pedig kiírattam.
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat())Eddig egyszerű volt, és boldogultam is.
Most jönne a feladat, vagyis a problémám.
Szeretném felhasználni az előbb létrehozott osztályt egy másik osztályhoz úgy, hogy az új osztály a régi osztály egy attribútumát felülírja. Aztán a metódust írnám felül, aztán adnék hozzá új attribútumot és metódust.De már az első sem megy, azaz szeretném felülírni az új osztállyal a régi egyik attribútumát, de csak az egyiket.
Alapvetően azt gondoltam, hogy ez tök egyszerű felveszem az egyik attribútumot az új osztályba:class Ketto(Egy):
def __init__(self, egyik):
self.egyik = egyikÉs minden más változatlan.
Azaz a programnak az elgondolásom szerint így kéne kinéznie:
class Egy():
def __init__(self, egyik=1, masik=2):
self.egyik = egyik
self.masik = masik
def szorzat(self):
return self.egyik * self.masik
class Ketto(Egy):
def __init__(self, egyik):
self.egyik = egyik
a = int(input('Adj egy számot!'))
b = int(input('Adj még egy számot'))
egyke = Ketto(a, b)
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat())Ez pedig a hibaüzenet:
Traceback (most recent call last):
File "/home/sire/teszte.py", line 16, in <module>
egyke = Ketto(a, b)
TypeError: __init__() takes 2 positional arguments but 3 were givenNem értem mi a baj. Elvileg 2 változóm van.Mindkettő az első osztályból jön, csak az egyiket lecserélem a második osztályból. Ez lenne nekem a logikus. Mit csinálok rosszul, és mi a jó megoldás.
-
#82595328
törölt tag
Bocs, de ezt nem is értem.
Nem igazán értek az osztályokhoz. De az elméletét nagyjából megértettem egy lakástervezéses példa alapján.
Az ős egyik tulajdonságát szeretném lecserélni az új osztályban. Ez lenne az osztályok egyik előnye. Hogy könnyedén lehet módosítani az alapprogramot annak módosítása nélkül.Azaz tételezzük fel, hogy Egy az egy sima szoba, egyik a magasság, másik a szélesség.
A Ketto osztály meg legyen egy kör alakú szoba, ahol az egyik a magasság (ezt örökölnő az ősből), a másik pedig a sugár(erre cserélném le a szélességet). (Lehetett volna négyzet, meg kör alapú hasáb is. A magasság meg terület így lenne értelme a szorzásnak, de a probléma szempontjából mindegy.)Azaz az az Egy(sima szoba) mintát akarom módosítani egy Ketto(kör alakú szoba) mintára. Úgyhogy az attribútumok értékét felhasználói input adja meg.
Tehát lényegében az osztályok első előnyét akarnám leprogramozni, hogy egy meglévő mintát (osztályt) felhasználva, készítek egy másik mintát (osztályt). Még csak nem is bonyolítottam egyelőre másik metódussal. Ennek egyszerűnek kellene lennie, de mégsem az.Tehát még egyszer első körben szeretnék egy osztályt módosítani egy származtatott osztállyal. Ez lenne a programomnak a lényege. A felhasználói adatbekérés már csak ráadás. De így is működnie kellene.
-
#82595328
törölt tag
válasz cousin333 #1261 üzenetére
Köszönöm a válaszokat!
Okosabb lettem! Viszont még egy alapproblémám nem oldódott meg én mindkét változónak most akarok értéket adni. Úgy hogy az egyik érték az szülő osztályból jön, a másik a származtatott osztályból.
Ezt hogy tudom megoldani? Csak úgy, hogy csinálok egy példányt a szülőosztályból is? Pont ezt nem akarom. Azt gondoltam, hogy ha példányosítom a származtatott osztályt, akkor abban benne lesz a szülőosztály is. Nekem ez lenne logikus. Hiszen a származtatott osztálynak tartalmaznia kellene a szülő osztályt is a módosításokkal. -
#82595328
törölt tag
Olyan kérdésem van, hogy lehet-e olyan if-elif szerkezetet csinálni, aminél az if-elifek száma változó.
Egyszerű példa bekérek egy számot mondjuk:adj meg egy számot: mondjuk 100
egy másik változóban bekérek intervallumokat (1-10, 10-20, 50-100, 100-1000), de ezeknek az elemek száma változhat.A program váza így nézne ki:
for i in bármi - Az mindegy hányszor fut le a for ciklus.
if szám in intervallum1
parancsok1
elif szám in intervallum2
parancsok2
....
elif szám in intervallumn
parancsoknVan ötletem, hogy csinálnám meg. Az if-et beraknám egy for ciklusba az intervallum számát változóból illesztem be, azaz annyiszor futna le a for ciklus, amennyi eleme van a változónak. De hátha valaki csinált már ilyet, vagy jobb ötlete van.
[ Szerkesztve ]
-
#82595328
törölt tag
Pedig az tök egyszerű.
Az intervallum változó nem úgy nézne ki, hanem valahogy így
((intervallum1, hozzátartozó érték1),(intervallum2, hozzátartozó érték2),..(intervallumn, hozzátartozó értékn))
Innen már gondolom egyértelmű, hogy bármennyi elem esetén lesz külön parancs.for x,y in intervals: sajnos fogalmam sincs, hogy tudnám használni
-
#82595328
törölt tag
válasz justmemory #1413 üzenetére
Azt hiszem nem voltam egyértelmű, nem én adom meg, hogy hány elem lesz a listában. Grafikus felületen szeretnék egy űrlapot (kb. egy 2 oszlopos táblázat), aminek tetszőleges számú sora lehet.
for i in xrange(4):
lista.append(intervallum)Tehát ez biztos nem jó nekem.
for intervallum in lista:
if szam in intervallum:
parancs1Igen, ilyesmire gondoltam, csak lesz még egy for ciklus. Ami megmondja, hogy az egész hányszor fusson le.
Köszönöm!
Tehát a programrészlet valahogy így fog kinézni:for i in range(szam-x):
for intervallum in lista:
if szam in intervallum:
parancs1[ Szerkesztve ]
-
#82595328
törölt tag
Igazából az intervallumokat én így akarom megadni:
intervals = (2,4,7,12)
Az egyes intervallumokat a változó egymás utáni elemeiből rakom össze (2-4,4-7,7-12), így kevesebb adat kell, relációkkal kezelem az átfedést.
azaz
if változó > intervals[0] és változó <= intervals[1]
parancsok
if változó > intervals[1] és változó <= intervals[2]
parancsok
Ez for ciklussal is menni fog, hiszen csak léptetnem kell a változó elemeit. Szerintem ez már menni fog.Persze simán át lehet alakítani ezt (2,4,7,12) erre (2-4,4-7,7-12) akkor ez is működhet.
for x,y in intervals:
for i in xrange(x,y+1):
parancs()De ez nekem még új. Majd kipróbálom.
Köszönöm a tippeket! Azt hiszem innen már elboldogulok.
[ Szerkesztve ]
-
#82595328
törölt tag
wxPython-nal kapcsolatban lenne kérdésem. Most váltottam tkinterről wxPythonra. A tkinterhez nincs normális grafikus tervező, meg elég csúnyácska is. Tkinterrel sokat használtam a print parancsot tesztelésre. Viszont wxPythonnál a print parancs kimenete valamiért nem jelenik meg konzolon.
A programom két fájból áll, az első tartalmazza a grafikus elemeket, a második pedig a tényleges programot. Ezt bemásoltam. A kilépés parancs működik, tehát a program jó, de a megnyitás gombra nyomva nincs hibaüzenet, és a konzolon se jelenik meg a parancs kimenete. Nem értem miért.
import wx
import mainFrame
# Implementing mainFrame
class program(mainFrame.mainFrame):
def __init__(self, parent):
mainFrame.mainFrame.__init__(self, parent)
# Handlers for mainFrame events.
def megnyitasOnMenuSelection(self, event):
# TODO: Implement megnyitasOnMenuSelection
print('valami')
def OnQuit(self, event):
# TODO: Implement OnQuit
self.Close()
if __name__ == '__main__':
app = wx.App()
frame = mainFrame.mainFrame(None)
frame.Show()
app.MainLoop()[ Szerkesztve ]
-
#82595328
törölt tag
válasz justmemory #1483 üzenetére
Nem hiszem, hogy ez a baj. A mainFrame-ben az megvan. Mint írtam a kilépés gomb működik. Ha áttenném a "self.Close()" függvényt a print helyére. Akkor ott is lefutna.
# Handlers for mainFrame events.
def megnyitasOnMenuSelection(self, event):
# TODO: Implement megnyitasOnMenuSelection
print('valami')
def OnQuit(self, event):
# TODO: Implement OnQuit
self.Close()Hibaüzenet nincs. Konzolban kimenet nincs. Én olyasmire tippelek, hogy vagy return kell, vagy kell valami külön parancs, hogy a konzolba irányítsam a kimenetet.
[ Szerkesztve ]
-
#82595328
törölt tag
válasz justmemory #1483 üzenetére
Azt hiszem megtaláltam itt, este kipróbálom:
https://stackoverflow.com/questions/3526461/redirecting-standard-output-to-print-messages-in-gui-instead-of-terminal
When you use the print statement with wxPython, where it ends up depends on how you called wx.App().
wx.App(redirect=False) or simply wx.App(0) will send print statements to a console window, otherwise they will be sent to a little textbox window.
[ Szerkesztve ]
-
#82595328
törölt tag
válasz justmemory #1486 üzenetére
Ha már szóba került a GTK. Miért pont GTK? Nekem az a bajom vele, akkor csak linux(unix)-on fog futni. Ezzel ugrik a python egyik nagy előnye, hogy multiplatform. Vagy rosszul tudom?
-
#82595328
törölt tag
Igaz a Libreoffice is mintha GTK lenne! Nem nehéz Windowsra gtk-t telepíteni? Nincs vele licencelési gond?
Azért választottam a wxPython-t, mert tkinter túl egyszerű és nincs hozzá grafikus tervező. A qt-nél van valami licencelési macera, amivel nem akarok bajlódni. A gtk-hoz meg a glade-t tudom, de az tudtommal nincs Windows-ra. A wxPython meg mindent tudott, amit elvártam.
- könnyen telepíthető
- van hozzá grafikus tervező
- multiplatform
- nincs vele licenc probléma
Végre megjelent a végleges verzió Python3-hoz. Így már pip-pel is lehet telepíteni. A wxFormbuilder elég jónak tűnik mint tervező. Tök könnyen megoldottam, hogy külön fájlban legyen a grafikus felület és a programmag. Csak ott akadtam el, hogy a legegyszerűbb parancsot (print) se tudtam nyomógombhoz hozzárendelni. A teszteléshez meg kell.A kérdésem, hogy érdemes inkább a GTK-t választani? Miért?
[ Szerkesztve ]
-
#82595328
törölt tag
válasz justmemory #1491 üzenetére
Köszi a választ!
A qt-nél úgy tudom, ha fizetős programhoz használod, akkor fizetőssé válik, kivéve ha statikusan/dinamikusan(?) linkeled. Vagy valami ilyesmi. Ez egyelőre nem fenyeget, de hátha. Ezért a qt nálam kiesett. Igazából most kezdtem ismerkedni a grafikus felülettel. Mivel a két gépem közül az egyiken csak Win van, ezért fontos, hogy multiplatform legyen. Úgyhogy egyelőre marad a wxPython. Pláne ha a print függvény kimenetét át tudom irányítani konzolra! Ha nem akkor GTK. -
#82595328
törölt tag
válasz justmemory #1493 üzenetére
Ha jól látom az utolsó hír 2011-s? Akkor inkább nem.
-
#82595328
törölt tag
válasz #82595328 #1482 üzenetére
Sikerült rájönnöm a hibára. Én okoztam. Az volt a terv, hogy 2 fájllal dolgozom. Az egyik a wxFormbuilderrel létrehozott grafikus elemeket tartalmazza. A másik lesz a tényleges program, amiben én dolgozom.
Csak épp mivel nem értek hozzá ezért sikerült a programhurok létrehozásakor az első fájlra hivatkoznom.
Az alábbi programrészletet én raktam hozzá.if __name__ == '__main__':
app = wx.App()
frame = mainFrame.mainFrame(None)
frame.Show()
app.MainLoop()
Így persze figyelmen kívül hagyta a változtatásaimat. A javítás annyi volt, hogy a frame= mainFrame.mainFrame(None)-t kellett a frame = program(None)-ra cserélnem.
Magamat zavartam össze azzal, hogy a kilépés self.Close() parancsot még a saját fájlom létrehozása előtt beleraktam az első fájlba. Így aztán az később is működött. -
-
#82595328
törölt tag
válasz DamianB #1502 üzenetére
Az iskoláról nem hallottam. Én ezt nézegettem:
https://www.ruander.hu/python-tanfolyam.html
A kérdés az, hogy mit akarsz a Pythonnal elérni. Ez a tanfolyam - ha jól olvastam - elsősorban játékfejlesztésre tanít.Igazság szerint rengeteg ingyen hozzáférhető anyag van a kezdő szinthez, simán meg lehet belőlük tanulni.
-
#82595328
törölt tag
válasz DamianB #1508 üzenetére
Ha nem megy jól az angol, akkor én inkább ezeket javasolnám:
https://www.youtube.com/watch?v=b94xan31GQE&list=PLUJ_gtsj_JfVtZEXqfkhuSgmGVBHQlFSi - én ebből tanultam.
https://pythonidomar.wordpress.com/csak-szepen-sorban/ - ezt nem ismerem, de jónak tűnik.Ezekből bőven megtanulod a kezdő kurzus anyagát.
Olvasnivalónak bár ezek Python 2-esek:
http://mek.oszk.hu/08400/08435/index.phtml
http://fullcircle.hu/category/sorozatok/python-sorozatok/page/2/Ha megy az angol valamennyire, akkor ezt javaslom:
https://www.youtube.com/watch?v=HBxCHonP6Ro&list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_
Én jelenleg ebből tanulok, még vagy 10 videó van hátra. -
#82595328
törölt tag
válasz Regirck #1600 üzenetére
A kérdésedből semmi nem világos.
- Hogy néz ki a txt fájl?
- Ugyanaz a szerkezete mint amit hozzá akarsz adni?
- Mit értesz index alatt? Minek külön index?
- Hogy olvasod be a txt fájlt?Én valahogy úgy képzelem a folyamatot, hogy:
1. Van egy listád txt-ben.
2. Ezt beolvasod egy változóba.
3. Ezt a változót szerkeszted
a, hozzáadsz
b, törölsz
4. A végén kiírod txt-be.Ez nem tűnik túl bonyolultnak. Mi nem megy?
-
#82595328
törölt tag
válasz Regirck #1605 üzenetére
Pár megjegyzés:
- Az index változó minek? Egyáltalán minek indexelni? Csak mert ott az index függvény. Feltéve hogy az elemek különbözők.
Pl:lista = ['a', 'b', 'c', 'd '];
for elem in lista:
print (lista.index(elem)+1, elem )Ez kb. ugyanígy működne fájlba kiíratáskor is.
- A fájl megnyitásra inkább használd a with open szerkezetet.
- Éppen függvényekkel is megcsinálhatod a feladatot, de egyelőre csaj feleslegesen bonyolítod a dolgot vele. -
#82595328
törölt tag
válasz velizare #1690 üzenetére
Azért ez így túlzás, ha nem értesz a GUI-hoz, akkor honnan tudod, hogy nem érdemes?
Attól hogy a Python szkriptnyelv, még lehet vele GUI-ra fejleszteni.
Nekem a wxPython-nal van tapasztalatom. Van hozzá normális GUI designer: wxFormBuilder. Amit te megcsinálsz menüt konzolon, ezt valószínűleg elég könnyen meg lehet benne csinálni. Cserébe tud sok minden mást is. Nem mondom, Linuxon macerás telepíteni (pip-pel sokszor nem megy), de Windowson pip-pel telepíthető.
Más kérdés, hogy a feladatra szerintem elég lenne egy MS Access vagy a Libreoffice Base. -
#82595328
törölt tag
-
#82595328
törölt tag
válasz GreenIT #1705 üzenetére
Bocs, de minek ehhez könyv?
Csak azért, mert az adatbáziskezelés kb. kimerül abban, hogy
- importálod az adatbázis kezeléséhez a modult (pl: sqlite3)
- kapcsolódsz az adatbázishoz
- sql parancsokat futtatsz - ja bocs, ez már nem is python
Ennyi! Na jó talán egy kicsit túloztam, de csak egy kicsit.Ebben a könyvben az adatbázis kezelés 12 oldal, de hidd el, nem akarsz belőle tanulni!
https://bookline.hu/product/home.action?_v=_&type=22&id=84517 -
#82595328
törölt tag
válasz Victor Súgó #1763 üzenetére
Ha nem akarsz C++ foglalkozni, akkor tudom javasolni a wxPython-t. Sokáig nem volt hozzá Python3 támogatás, de már van . Van hozzá normális dokumentáció, GUI tervező. Igaz fapadosabbnak tűnik, mint a Qt.
-
#82595328
törölt tag
válasz Victor Súgó #1765 üzenetére
Honnan veszed, hogy nem ismerem?
Szerintem nem írtam ilyet.
Új hozzászólás Aktív témák
- Új Hp Pavilion 15-eh Fémházas Szuper Laptop 15,6" -30% AMD Ryzen 7 5700U 8Mag 16/1TB FHD MATT
- ATI RADEON RX 480 -8 gb DDR5 256 bit videokártya
- Geforce GTX 460-1 gb DDR5 256 bit videokártya
- Geforce G 210 -1 gb videokártya
- Díszdobozos Lenovo Yoga Slim 7i Pro "Kis Gamer" Ultrabook 14" -40% i5-11300H 16/512 QHD+ 2,8K OLED