Szerző Téma: Több ablak, mint kellene..  (Megtekintve 830 alkalommal)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Több ablak, mint kellene..
« Dátum: 2018-02-11, 15:17:16 »
Sziasztok!
Viccesen hangzik, de már több mint 1 napja szenvedek egy olyan problémával, amit valószínűleg a világon a legegyszerűbb megoldani.
A képen látszik, hogy 2 ablak van megnyitva.
Nos, ez az egész "rendszer" az f5 billentyűre van rakva, és amikor megnyomom előhoz egy ablakot, viszont, ha megint megnyomom újra előhoz egy ablakot, nem pedig bezárja.
A célom az lenne, hogy ha egyszer lenyomom az f5-öt behozza az ablakot,ha megint megnyomom bezárja.

Game.py
(click to show/hide)
uitesztwindow.py
(click to show/hide)

Próbáltam ezer másik switchbotról,killguiról lemásolni ezt a részt, de folyton 10+ ablakkal lépek ki a játékból és megyek vissza a googlehez..
Nem vagyok egy nagy mestere a pythonnak, miközben keresgélek mennek a tutorialok, de erről semmit nem találtam..Lehet velem van a baj, de tényleg eltöltöttem legalább 2órát a keresgéléssel. Tudom, hogy nem fognak/fogtok minden megcsinálni helyettem(és nem is szeretném ezt), de tényleg elkelne egy kis segítség. :'D
#Nemleszélesszerver >:( :(

Remélem érthető a gondom, és a célom is.
Előre is köszönöm az értelmes, segítőkész válaszokat!
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető [VIP]Disco

  • VIP
  • Professional
  • *
  • Thank You
  • -Given: 6
  • -Receive: 262
  • Hozzászólások: 371
  • Segített: 592
  • ρяємιυм υѕєя <3
Re:Több ablak, mint kellene..
« Válasz #1 Dátum: 2018-02-11, 15:30:16 »
Több probléma is van ebben, de vegyük őket sorba.

1. Ne game-ben csinálj ablakot, hanem interfacemodule-ban.
2. Felül az __init__ függvényben hozz létre egy változót az ablaknak, például ezt: self.testWindow = None
3. A funkcióban ennek a változónak add meg az ablak értékét, ne pedig hozz létre egy újat.

Tehát:

import uitesztwindow
def ToggleTestWindow(self):
if not self.testWindow:
self.testWindow = uitesztwindow.TesztWindow()
self.testWindow.Show()
return

if self.testWindow.IsShow():
self.testWindow.Hide()
else:
self.testWindow.Show()

Az interfacemodule-ban lévő Close-ba pedig írd bele, hogy a testWindow is bezáródjon, különben kilépésnél ott fog maradni.

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #2 Dátum: 2018-02-11, 16:12:05 »
1. Ne game-ben csinálj ablakot, hanem interfacemodule-ban.

Ezt, hogy érted? Az ablak egy külön .py fájlban van, a game-ben csak az van, hogy az f5 lenyomásakor mi történjen.
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #3 Dátum: 2018-02-11, 17:02:51 »
Sztem felesleges az interfacebe nyúlkálni, én csak game-ben oldom meg a dolgot.
class GameWindow(ui.ScriptWindow):
def __init__(self, stream):
ide létrehozol 1 új változót pl
self.switchbot = NoneKicsit lejjebbmész a bezáráshoz
def Close(self):és ide is bemásolod ugyanazt a kódot mint előbb, majd jöhet a megnyitás.
def Switchbot(self):
if not self.switchbot:
self.switchbot = pyfájlneve.classneve()

if self.switchbot.IsShow():
self.switchbot.Close()
else:
self.switchbot.Show()
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #4 Dátum: 2018-02-11, 17:06:06 »
Sikerül megoldanom, kicsit másképp, mint ahogy leírtátok, de működik.
Egy olyan kérdésem lenne még, hogy miután megnyitom ezt az ablakot és megnyomom az ESC-et, miért nem hozza be a megszokott menüt?
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető TiuXin

  • Beginner
  • Thank You
  • -Given: 1
  • -Receive: 16
  • Hozzászólások: 36
  • Segített: 15
Re:Több ablak, mint kellene..
« Válasz #5 Dátum: 2018-02-11, 17:08:19 »


Lehet azért mert bezárja elvileg az ablakot? ???
A buta emberek különös szenvedélyt táplálnak az olyan következtetések iránt, amelyekre a maguk eszével jutottak.
Lev Tolsztoj

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #6 Dátum: 2018-02-11, 17:30:03 »
Fogalmam sincs, hogy mi az ESC nem működésének oka.

Ezt azért raktam bele, hogy az ESC-vel is betudjam zárni az ablakot.
Lényegében, mint a leltárnál. Ha meg van nyitva és megnyomod az ESC-t bezárja a leltárt, ha újra megnyomod előjön a menü.
Nálam az ESC semmit nem csinál, miután megnyitom az ablakot és bezárom. :/
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #7 Dátum: 2018-02-11, 17:37:04 »
Vmi mással akadhat össze mert nálam tök szépen workingel a dolog.
Akár Esc-el zárom be az ablakot, akár ki X-elem utána ugyanúgy jó az Esc továbbra is.
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #8 Dátum: 2018-02-11, 17:58:24 »
Van rá valami megoldás, vagy vegyem ki és felejtsem el?
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #9 Dátum: 2018-02-11, 18:31:57 »
Ha nem hozod elő a switchbotot, akkor alapjáraton működik az esc v úgy se?
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #10 Dátum: 2018-02-11, 18:33:35 »
Úgy működik, de miután behozom, már nem.
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #11 Dátum: 2018-02-11, 18:41:41 »
Akkor esetleg mutasd meg mi az a másik mód ahogy megoldottad.
Csak arra tudok tippelni mivel amit én leírtam korábbi hsz-emben azzal tökéletesen működik és az esc-et se rontja el.
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #12 Dátum: 2018-02-11, 18:55:10 »
(click to show/hide)
Annyit változtattam, hogy ezt: self.testWindow = None nem a def Close részhez raktam, mert így működik csak.
Megnézdnéd nekem, hogy az OnPressEscapeKey funkcióhoz neked mi van írva?
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #13 Dátum: 2018-02-11, 18:59:35 »
uiinventoryból copyztam ki, ugyanaz mint ami a képen van feljebb.
def OnPressEscapeKey(self):
self.Close()
return True
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #14 Dátum: 2018-02-11, 19:26:45 »
Mostmár működik az ESC is, viszont ha ezzel lépek ki, akkor kétszer kell f5-öt nyomnom, mivel gondolom nem állítja vissza a self.testWindow "None" értékre.
Erre valami megoldás?  >:(
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető 5310pati

  • Sage
  • *****
  • Thank You
  • -Given: 27
  • -Receive: 372
  • Hozzászólások: 1 341
  • Segített: 475
    • Advanced World
Re:Több ablak, mint kellene..
« Válasz #15 Dátum: 2018-02-11, 19:37:10 »
Mert te másképp írtad meg azért nem jó.
Nálam a Close és Show állít 1 változót
def Show(self):
self.show = True
ui.ScriptWindow.Show(self)

def Close(self):
self.show = False
self.ClearAll()
self.Hide()
amit az IsShow ad vissza, így tudom h nyitva van-e v sem.
def IsShow(self):
return self.show
És ez alapján írtam a kódot a megnyitásra:
def WhisGradeUpgrade(self):
if not self.whisgrade:
self.whisgrade = uiWhisGrade.WhisGradeWindow()

if self.whisgrade.IsShow():
self.whisgrade.Close()
else:
self.whisgrade.Show()
Ha még nincs ilyen ablak, azaz 1. lefutásról van szó, akkor létrehozza, alapból False értéken van a show, tehát az else ág fog lefutni így egyből megnyitja az ablakot.
Utána már csak váltakozva fut le kód.
Felesleges töröltetni az ablakot minden bezárásnál, elég a Show/Hide.
Skype:p-tom1 (Whistl3R)

Nem elérhető szabika1232

  • Beginner
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Hozzászólások: 27
  • Segített: 0
  • Ichirou
Re:Több ablak, mint kellene..
« Válasz #16 Dátum: 2018-02-11, 20:01:34 »
Hát ez nem jön össze :x
“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” ― Bjarne Stroustrup

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 97
  • -Receive: 663
  • Hozzászólások: 1 374
  • Segített: 706
Re:Több ablak, mint kellene..
« Válasz #17 Dátum: 2018-02-11, 22:36:00 »
hm?? ???

if a.IsShow():
a.Close()

constinfo fv-t felejtsd el belőle, a kliens nem tud olyan gyorsan értéket átírni.

Még game.py-on belül lehet globális változót is használni, több mód van rá.

Nem elérhető [VIP]Disco

  • VIP
  • Professional
  • *
  • Thank You
  • -Given: 6
  • -Receive: 262
  • Hozzászólások: 371
  • Segített: 592
  • ρяємιυм υѕєя <3
Re:Több ablak, mint kellene..
« Válasz #18 Dátum: 2018-02-13, 11:54:49 »
Nekem alapból létezik IsShow, de ha nektek nincs:

ui.py Window classba ezt kell betenni:

def IsShow(self):
return wndMgr.IsShow(self.hWnd)