python标签位置调节_标签位置,调整背景大小和隐藏标题B

这篇博客探讨了如何使用Pyglet库来管理窗口信息,包括调整标签的位置、根据窗口大小变化动态适配背景、隐藏窗口标题栏以及在按键事件中显示键名而非键码。作者遇到的问题在于窗口大小改变时标签坐标无法自动更新,寻找图像背景的自适应方法,以及如何隐藏或删除窗口标题。同时,还询问了如何在按键事件中以键名显示而非键码。
摘要由CSDN通过智能技术生成

我试图更好地理解Pyglet,我使用了Torxed在上一个问题中发布的脚本。我开始修改它,直到我到达这一点:import pyglet, datetime, os

from pyglet.gl import *

from collections import OrderedDict

from time import time

from pathlib import Path

key = pyglet.window.key

class main(pyglet.window.Window):

#Variable Display

Fullscreen = False

CountDisplay = 0

setDisplay0 = (1024, 576)

setDisplay1 = (800, 600)

setDisplay2 = (1024, 768)

setDisplay3 = (1280, 720)

setDisplay4 = (1280, 1024)

setDisplay5 = (1366, 768)

setDisplay6 = (1920, 1080)

#Variable Info

infoHidden = False

title = "Pokémon Life And Death: Esploratori Del Proprio Destino"

build = "Versione: 0.0.0"

keyPrint = "Nessuno"

MousekeyPrint = "Nessuno"

infoFullscreen = "Disattivo"

infoDisplay = "1024, 576"

def __init__ (self, width=1024, height=576, fullscreen=False, *args, **kwargs):

super(main, self).__init__(width, height, fullscreen, *args, **kwargs)

platform = pyglet.window.get_platform()

display = platform.get_default_display()

screen = display.get_default_screen()

self.infoScreen = (screen.width, screen.height)

self.xDisplay = int(screen.width / 2 - self.width / 2)

self.yDisplay = int(screen.height / 2 - self.height / 2)

self.set_location(self.xDisplay, self.yDisplay)

self.sprites = OrderedDict()

self.spritesInfo = OrderedDict()

#Information Hidden

#Title

self.spritesInfo["title_label"] = pyglet.text.Label(self.title, x=self.infoPos("x", 0), y=self.infoPos("y", 0))

#Build Version

self.spritesInfo["build_label"] = pyglet.text.Label(self.build, x=self.infoPos("x", 0), y=self.infoPos("y", 20))

#Fullscreen

self.spritesInfo["fullscreen_label"] = pyglet.text.Label("Fullscreen: " + self.infoFullscreen, x=self.infoPos("x", 0), y=self.infoPos("y", 40))

#Display

self.spritesInfo["screen_label"] = pyglet.text.Label("Display: " + self.infoDisplay, x=self.infoPos("x", 0), y=self.infoPos("y", 60))

#FPS

self.spritesInfo["fps_label"] = pyglet.text.Label("FPS: 0", x=self.infoPos("x", 0), y=self.infoPos("y", 80))

self.last_update = time()

self.fps_count = 0

#Mouse Position

self.mouse_x = 0

self.mouse_y = 0

self.spritesInfo["mouse_label"] = pyglet.text.Label(("Mouse Position (X,Y): " + str(self.mouse_x) + "," + str(self.mouse_y)), x=self.infoPos("x", 0), y=self.infoPos("y", 100))

#Player Position

self.player_x = 0

self.player_y = 0

self.spritesInfo["player_label"] = pyglet.text.Label(("Player Position (X,Y): " + str(self.player_x) + "," + str(self.player_y)), x=self.infoPos("x", 0), y=self.infoPos("y", 120))

#Key Press

self.keys = OrderedDict()

self.spritesInfo["key_label"] = pyglet.text.Label(("Key Press: " + self.keyPrint), x=self.infoPos("x", 0), y=self.infoPos("y", 140))

#Mouse Press

self.spritesInfo["MouseKey_label"] = pyglet.text.Label(("Mouse Key Press: " + self.MousekeyPrint), x=self.infoPos("x", 0), y=self.infoPos("y", 160))

self.alive = 1

def infoPos(self, object, ny):

posInfo = self.get_size()

if object is "x":

elab = 10

elif object is "y":

elab = posInfo[1] - 20 - ny

else:

elab = 0

return elab

def on_draw(self):

self.render()

def on_close(self):

self.alive = 0

def on_mouse_motion(self, x, y, dx, dy):

self.mouse_x = x

self.mouse_y = y

def on_mouse_release(self, x, y, button, modifiers):

self.MousekeyPrint = "Nessuno"

def on_mouse_press(self, x, y, button, modifiers):

self.MousekeyPrint = str(button)

def on_mouse_drag(self, x, y, dx, dy, button, modifiers):

self.drag = True

print('Dragging mouse at {}x{}'.format(x, y))

def on_key_release(self, symbol, modifiers):

self.keyPrint = "Nessuno"

try:

del self.keys[symbol]

except:

pass

def on_key_press(self, symbol, modifiers):

if symbol == key.ESCAPE:

self.alive = 0

if symbol == key.F2:

datanow = datetime.datetime.now()

if not Path("Screenshot").is_dir():

os.makedirs("Screenshot")

pyglet.image.get_buffer_manager().get_color_buffer().save("Screenshot/"+str(datanow.day)+"-"+str(datanow.month)+"-"+str(datanow.year)+"_"+str(datanow.hour)+"."+str(datanow.minute)+"."+str(datanow.second)+".png")

if symbol == key.F3:

if self.infoHidden:

self.infoHidden = False

else:

self.infoHidden = True

if symbol == key.F10:

self.CountDisplay += 1

if self.CountDisplay == 1:

size = self.setDisplay1

elif self.CountDisplay == 2:

size = self.setDisplay2

elif self.CountDisplay == 3:

size = self.setDisplay3

elif self.CountDisplay == 4:

size = self.setDisplay4

elif self.CountDisplay == 5:

size = self.setDisplay5

elif self.CountDisplay == 6:

size = self.setDisplay6

else:

self.CountDisplay = 0

size = self.setDisplay0

self.set_size(size[0], size[1])

self.infoDisplay = str(size[0]) + "," + str(size[1])

pos = (int(self.infoScreen[0] / 2 - size[0] / 2), int(self.infoScreen[1] / 2 - size[1] / 2))

self.set_location(pos[0], pos[1])

if symbol == key.F11:

if self.Fullscreen:

self.Fullscreen = False

self.set_fullscreen(False)

self.infoFullscreen = "Disattivo"

else:

self.Fullscreen = True

self.set_fullscreen(True)

self.infoFullscreen = "Attivo"

self.keyPrint = str(symbol)

self.keys[symbol] = True

def pre_render(self):

pass

def render(self):

self.clear()

#FPS

self.fps_count += 1

if time() - self.last_update > 1:

self.spritesInfo["fps_label"].text = "FPS: " + str(self.fps_count)

self.fps_count = 0

self.last_update = time()

#Mouse Position

self.spritesInfo["mouse_label"].text = "Mouse Position (X,Y): " + str(self.mouse_x) + "," + str(self.mouse_y)

#Player Position

self.spritesInfo["player_label"].text = "Player Position (X,Y): " + str(self.player_x) + "," + str(self.player_y)

#Key Press

self.spritesInfo["key_label"].text = "Key Press: " + self.keyPrint

#Mouse Press

self.spritesInfo["MouseKey_label"].text = "Mouse Key Press: " + self.MousekeyPrint

#Fullscreen

self.spritesInfo["fullscreen_label"].text = "Fullscreen: " + self.infoFullscreen

#Display

self.spritesInfo["screen_label"].text = "Display: " + self.infoDisplay

#self.bg.draw()

self.pre_render()

for sprite in self.sprites:

self.sprites[sprite].draw()

if self.infoHidden:

for spriteInfo in self.spritesInfo:

self.spritesInfo[spriteInfo].draw()

self.flip()

def run(self):

while self.alive == 1:

self.render()

event = self.dispatch_events()

if __name__ == '__main__':

x = main()

x.run()

但现在我发现自己已经到了一个无法独自在《皮格勒》中继续的地方。在

我不明白如何每次窗口大小改变时都改变“标签”的坐标。在

我希望能够使用一个图像作为背景,并使其适应窗口的大小(基本图像为1920x1080,即最大窗口大小)。问题是我在这个问题上没有找到多少东西。我说我正在研究的是2D,而不是3D。我在另一个问题上找到了一个可能的解决方案,总是通过调整图像的大小来回答,但是在之前的一些测试中,在调整了它之后,它没有起作用。所以我真的不知道该在哪里敲我的头。在Pygame中它很容易使用”pygame.transform.scale“,但在Pyglet我不知道。在

最后,我在PygletWiki和web上都试过了,但是没有找到任何东西。如何删除或隐藏窗口标题栏?在Pygame中,你可以用旗子。Pyglet也可以这么做吗?在

编辑:

我忘了问另一个问题。当我按下键盘或鼠标上的某个键时,用F3键显示的信息将以相应的键号打印出来。有没有办法用按钮的名称替换数字?例如,97被替换为“A”?显然,我的意思是,如果有一种方法不必列出所有的键并为每个人都加上“if”语句。在

编辑2:

似乎是发布的脚本,def on_resize (self, width, height)部分不太喜欢它。让我来解释一下,如果函数本身正确的话。问题是,如果我插入,标签,一旦按下F3,就不会出现。我尝试在几个地方使用print测试它,似乎唯一没有执行的指令是self.spritesInfo [spriteInfo] .draw ()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值