Seite 1 von 1

Menü mit ui erstellen

Verfasst: Montag 4. Januar 2021, 18:03
von Python567
Ich möchte ein Spiel auf meinem iPad spielen, weswegen ich tkinter nicht verwenden kann! Hat jemand damit ui Menüs Erfahrung? Weiß gerade nicht, wie ich die Knöpfe als wirkliche Knöpfe benutzen kann.
Mein Code:

Code: Alles auswählen

from scene import *
import ui
import sound
A = Action

class ButtonNode (SpriteNode):
	def __init__(self, title, *args, **kwargs):
		SpriteNode.__init__(self, 'pzl:Button1', *args, **kwargs)
		button_font = ('Avenir Next', 20)
		self.title_label = LabelNode(title, font=button_font, color='black', position=(0, 1), parent=self)
		self.title = title

class MenuScene (Scene):
	def __init__(self, title, subtitle, button_titles):
		Scene.__init__(self)
		self.title = title
		self.subtitle = subtitle
		self.button_titles = button_titles
		
	def setup(self):
		button_font = ('Avenir Next', 20)
		title_font = ('Avenir Next', 36)
		num_buttons = len(self.button_titles)
		self.bg = SpriteNode(color='black', parent=self)
		bg_shape = ui.Path.rounded_rect(0, 0, 240, num_buttons * 64 + 140, 8)
		bg_shape.line_width = 4
		shadow = ((0, 0, 0, 0.35), 0, 0, 24)
		self.menu_bg = ShapeNode(bg_shape, (1,1,1,0.9), '#15a4ff', shadow=shadow, parent=self)
		self.title_label = LabelNode(self.title, font=title_font, color='black', position=(0, self.menu_bg.size.h/2 - 40), parent=self.menu_bg)
		self.title_label.anchor_point = (0.5, 1)
		self.subtitle_label = LabelNode(self.subtitle, font=button_font, position=(0, self.menu_bg.size.h/2 - 100), color='black', parent=self.menu_bg)
		self.subtitle_label.anchor_point = (0.5, 1)
		self.buttons = []
		for i, title in enumerate(reversed(self.button_titles)):
			btn = ButtonNode(title, parent=self.menu_bg)
			btn.position = 0, i * 64 - (num_buttons-1) * 32 - 50
			self.buttons.append(btn)
		self.did_change_size()
		self.menu_bg.scale = 0
		self.bg.alpha = 0
		self.bg.run_action(A.fade_to(0.4))
		self.menu_bg.run_action(A.scale_to(1, 0.3, TIMING_EASE_OUT_2))
		self.background_color = 'white'
		
	def did_change_size(self):
		self.bg.size = self.size + (2, 2)
		self.bg.position = self.size/2
		self.menu_bg.position = self.size/2
	
	def touch_began(self, touch):
		touch_loc = self.menu_bg.point_from_scene(touch.location)
		for btn in self.buttons:
			if touch_loc in btn.frame:
				sound.play_effect('8ve:8ve-tap-resonant')
				btn.texture = Texture('pzl:Button2')
	
	def touch_ended(self, touch):
		touch_loc = self.menu_bg.point_from_scene(touch.location)
		for btn in self.buttons:
			btn.texture = Texture('pzl:Button1')
			if self.presenting_scene and touch_loc in btn.frame:
				new_title = self.presenting_scene.menu_button_selected(btn.title)
				if new_title:
					btn.title = new_title
					btn.title_label.text = new_title

if __name__ == '__main__':
	run(MenuScene('Racers', 'Subtitle', ['Play', 'Winner']))

Re: Menü mit ui erstellen

Verfasst: Montag 4. Januar 2021, 18:11
von __deets__
Das steht doch als allererstes in der Dokumentation: https://omz-software.com/pythonista/doc ... tml#button

Re: Menü mit ui erstellen

Verfasst: Montag 4. Januar 2021, 18:38
von Python567
So weit bin ich auch schon, nur ich weiß nicht, wie/wo ich das dann einfügen muss

Re: Menü mit ui erstellen

Verfasst: Montag 4. Januar 2021, 18:46
von __deets__
Das weiss ich auch nicht. Ich kenne dein Projekt ja nicht. Und du hast doch den ganzen Code oben geschrieben - wieso weißt du nicht, was der tun soll?