[PYTHON] Fenster öffnet sich öfters

12/06/2015 11:23 Kira Mikami#1
-
12/06/2015 13:26 rollback#2
Ich würde dir empfehlen beim erzeugen der Klasse das Fenster einmal zu laden und nur eine Toggle Methode zu schreiben. Aktuell lädst du bei jedem "öffnen" des Fensters die komplette GUI neu und öffnest diese.
12/06/2015 14:07 Kira Mikami#3
-
12/08/2015 14:49 .K0rí#4
Bin gerade am handy und da kann ich jezt nicht viel machen sollte aber gehen.

Code:
from switchbot import Bot
import os
import uiwiki
import app
import dbg
import grp
import item
import background
import chr
import chrmgr
import player
import snd
import chat
import textTail
import snd
import net
import effect
import wndMgr
import fly
import systemSetting
import quest
import guild
import skill
import messenger
import localeInfo
import constInfo
import exchange
import ime
import time
import uiHealth
import event

import ui
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget
import uiRainSystem
import uiAchievement

# PRIVATE_SHOP_PRICE_LIST
import uiPrivateShopBuilder
# END_OF_PRIVATE_SHOP_PRICE_LIST

import mouseModule
import consoleModule
import localeInfo

import playerSettingModule
import interfaceModule

import musicInfo
import debugInfo
import stringCommander
import uiteleport
import uiTaskbar


from _weakref import proxy



class AdminPanel(ui.ScriptWindow):

	def __init__(self):
		ui.ScriptWindow.__init__(self)
		self.LoadPick()
		self.Load = 0
	
	def __del__(self):
		ui.ScriptWindow.__del__(self)
	def LoadPick(self):
	
		chat.AppendChat(chat.CHAT_TYPE_NOTICE, "Admin Panel by Tree activated")
		
		self.LoadMainForm()
		self.FaceButton()
		
	def LoadMainForm(self):
		##########MainForm##########
		global OnOff
		self.LoadMainForm = ui.BoardWithTitleBar()
		self.LoadMainForm.SetSize(200, 600)
		self.LoadMainForm.SetPosition(wndMgr.GetScreenWidth()-360, wndMgr.GetScreenHeight()-700)
		self.LoadMainForm.AddFlag("movable")
		self.LoadMainForm.AddFlag("float")
		self.LoadMainForm.SetTitleName("Admin Panel")
		self.LoadMainForm.SetCloseEvent(self.LoadMainForm.Hide)
		self.LoadMainForm.Show()
		##########Interface##########
		
		##########Buttons im Programm##########
		self.TeleportMenuButton = ui.Button()
		self.TeleportMenuButton.SetParent(self.LoadMainForm)
		self.TeleportMenuButton.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
		self.TeleportMenuButton.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
		self.TeleportMenuButton.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
		self.TeleportMenuButton.SetText("Teleport")
		self.TeleportMenuButton.SetPosition(25, 60)
		self.TeleportMenuButton.SetEvent(ui.__mem_func__(self.LoadTeleportMenu))
		self.TeleportMenuButton.Show()
		
		##########Slotbars/EditLines im Programm##########
		
		#Admin Panel öffnen
	def FaceButton(self):
		
		global AdminPanelOpen
		AdminPanelOpen = ui.Button()
		AdminPanelOpen.SetText("")
		AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120)
		AdminPanelOpen.SetSize(88, 21)
		AdminPanelOpen.SetEvent(self.LoadMainForm.Show)
		AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
		AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
		AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
		AdminPanelOpen.Show()
		
		global AdminPanelText
		AdminPanelText = ui.TextLine()
		AdminPanelText.SetParent(AdminPanelOpen)
		AdminPanelText.SetVerticalAlignCenter()
		AdminPanelText.SetHorizontalAlignCenter()
		AdminPanelText.SetPosition(43,10)
		AdminPanelText.SetText("Admin Panel")
		AdminPanelText.Show()
		#Admin Panel öffnen End
		
	def LoadTeleportMenu(self):
		##########MainForm##########
		if self.Load == 0:
			global OnOff
			self.LoadTeleportMenu = ui.BoardWithTitleBar()
			self.LoadTeleportMenu.SetSize(200, 600)
			self.LoadTeleportMenu.SetPosition(wndMgr.GetScreenWidth()-360, wndMgr.GetScreenHeight()-700)
			self.LoadTeleportMenu.AddFlag("movable")
			self.LoadTeleportMenu.AddFlag("float")
			self.LoadTeleportMenu.SetTitleName("Admin Panel")
			self.LoadTeleportMenu.SetCloseEvent(self.LoadTeleportMenu.Hide)
			self.LoadTeleportMenu.Show()
			self.Load = 1
		else:
			self.LoadTeleportMenu.SetCloseEvent(self.LoadTeleportMenu.Hide)
			self.Load = 0
		
		##########Interface##########
		
		##########Buttons im Programm##########
		
		##########Slotbars/EditLines im Programm##########
		
		#Admin Panel öffnen	
                
AdminPanelDialog = AdminPanel()
AdminPanelDialog.LoadMainForm.Hide()
12/09/2015 09:30 Kira Mikami#5
-
12/09/2015 09:55 .Various#6
Warum benutzt ihr nicht den bereitgestellten PythonScriptLoader.. Diese ganzen Property-Setzungen kann man dadurch doch viel schöner machen, dann müsst ihr das nicht alles in die Klasse stopfen..
Zum Problem, schonmal überlegt das Ganze ganz einfach über eine Boolean Abfrage zu machen?
Einfach einen Boolean setzen z.B admin_panel_is_shown und wenn es geöffnet wird, prüfst du, ob es bereits offen ist und wenn nicht dann öffnet es sich..

Dann noch eine Frage. Wozu importierst du so viele Module???

MfG
12/09/2015 10:33 rollback#7
Quote:
Originally Posted by .Various View Post
Warum benutzt ihr nicht den bereitgestellten PythonScriptLoader.. Diese ganzen Property-Setzungen kann man dadurch doch viel schöner machen, dann müsst ihr das nicht alles in die Klasse stopfen..
Zum Problem, schonmal überlegt das Ganze ganz einfach über eine Boolean Abfrage zu machen?
Einfach einen Boolean setzen z.B admin_panel_is_shown und wenn es geöffnet wird, prüfst du, ob es bereits offen ist und wenn nicht dann öffnet es sich..

Dann noch eine Frage. Wozu importierst du so viele Module???

MfG
Soweit ich weiss hat jedes window sowieso die Methode "IsShow()"
12/09/2015 10:53 Kira Mikami#8
-
12/09/2015 16:59 .Various#9
Quote:
Originally Posted by Kira Mikami View Post
Ich weiß, das ich so viele Module nicht brauche, ich habe sie aus der "Game.py" kopiert.
Und ich habe kein einziges Wort verstanden, deshalb bitte ich euch auch die ganze Zeit, mir alles zu erklären, damit ich es lernen kann.



Das heißt, würde ich "AdminPanel()" hiden, würden sich ALLE Menüs verstecken.

Und mehrere Classes ist doch zu umständlich, oder?
Ja. Abfrage z.B sowas:
Code:
if adminPanel.IsShow():
	adminPanel.Hide()
else:
	adminPanel.Show()