小编Ele*_*eza的帖子

如何在 Tkinter 中创建一个类似 IDLE 的小型 Python Shell?

我正在尝试制作一个由 Python Shell GUI 控制的东西。

唯一的问题是,我不知道如何制作整个输入/输出的东西。我只想能够输入一个输入,执行 python 命令并给出 python 命令的输出。我知道 IDLE 是在 Tkinter 中制作的,所以它使用小部件?

它实际上只是一个“输入,显示输出”的东西。

我试过搜索它,但似乎大多数结果都与命令行有关,这不是我要找的。另一个与我完全一样的问题也不是我的想法。我还尝试查找 IDLE 的源代码,但找不到我要找的东西。

我找到了一些适用于 Linux 的答案,但我使用的是 Windows 10 ...

我需要在 Tkinter 中使用“shell”,因为在屏幕的一侧将是连接到命令输出的其他东西。

有谁知道用于制作非常简单的 Python shell 的小部件吗?

python shell user-interface tkinter

9
推荐指数
2
解决办法
2436
查看次数

将一个Sprite移向Pygame中的玩家(使用pygame向量)

我正在制作一个游戏而对手应该向玩家射击子弹.

我希望子弹朝着子弹射击时玩家的方向前进(玩家可以移动,但是子弹朝着一个恒定的方向移动.)

但子弹只是在对手上闪烁.

我使用pygame的Vector2来控制子弹的移动.

这是一个子弹拼写示例:

bulletspell = Spell(
    pygame.image.load("Sprites/lightblue-glowey.png"),
    ((0, pygame.Vector2(-0.5, 1) * 4), #these vectors show the bullet shooting pattern
     (0, pygame.Vector2(0, 1) * 4),
     (0, pygame.Vector2(0.5, 1) * 4)),
    10, 8, 340
    )
Run Code Online (Sandbox Code Playgroud)

我试过的矢量是 (player.image.get_rect(topleft=(player.rect.x, player.rect.y)).x, 1)

我不是在寻找要修改的整个代码,我有太多的修订和我工作的代码,我只需要帮助搞清楚向量.

这是代码(仅供参考):

import pygame

class Player(pygame.sprite.Sprite):
    sprite = pygame.image.load("Sprites/player.png")

    def __init__(self, *groups):
        super().__init__(*groups)
        self.image = Player.sprite
        self.rect = self.image.get_rect(topleft=(445, 550))
        self.pos = pygame.Vector2(self.rect.topleft)

    def update(self):
        key = pygame.key.get_pressed()
        dist = 3
        if key[pygame.K_DOWN]:
            self.rect.y += dist
        elif key[pygame.K_UP]:
            self.rect.y -= dist …
Run Code Online (Sandbox Code Playgroud)

python pygame

8
推荐指数
1
解决办法
240
查看次数

Pygame / MoviePy-视频以可怕的帧速率显示,并且窗口尺寸大于我的屏幕

由于新的故事视频游戏项目,我一直在寻找一种方法来尝试在Pygame中显示视频。我终于偶然发现了Moviepy,它运作正常……除了视频显示每秒仅显示24帧之一,并且显示的窗口大于屏幕显示。(在配备11英寸(我认为)屏幕的Windows 10笔记本电脑上)

声音还可以,但是视频也播放太快,因此不同步。

我已经尝试过在文档中说过的resize函数,但是它没有任何效果。

而且我找不到与帧率有关的内容。

因此,我需要一种使窗口更小并校正帧速率的方法。

这是我使用的代码:

from moviepy.editor import VideoFileClip
from moviepy.video.fx.resize import resize
import pygame

pygame.display.set_caption('My video!')

clip = VideoFileClip('Eleeza Crafter And The Cloud Colours Trailer.mp4')
clip.fx(resize, width=240)
clip.preview(fps=24)
pygame.quit()
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。谢谢 :)

EDIT: I tested a different video at the same framerate and it works perfectly? Then again it was just a simple line flying around the screen.

python video pygame moviepy

6
推荐指数
1
解决办法
338
查看次数

从两个Pygame精灵中射出的"子弹"组合成一条长线

我有一个射击子弹的精灵.有时候子弹也会从看不见的射手身上射出来.

从对手到射手中段程序的转换工作,但是当我希望子弹以某种方式射击时,每次射击之间的延迟,子弹似乎变成一条线(图像中的紫色物体是子弹):

从圆圈开始的长紫色线的屏幕截图

当对手射击时,机械师会工作,但当它是无形的方形时,机械师才会工作.

为什么会这样?我需要修复一个小错误吗?

这是我的代码:

import pygame
import time
import itertools
import os

pygame.init()
SCREENWIDTH = 1000
SCREENHEIGHT = 650
screen = pygame.display.set_mode([SCREENWIDTH, SCREENHEIGHT])
screen.fill((255, 123, 67))
pygame.draw.rect(screen, (230, 179, 204), (0, 50, 1000, 650), 0)

background = screen.copy()
clock = pygame.time.Clock()
stageon = True

class Spell:

    def __init__(self, bullet, pattern, speed, loop, tick_delay):
        self.bullet = bullet
        self.pattern = pattern
        self.speed = speed
        self.loop = loop
        self.tick_delay = tick_delay

class Shooter(pygame.sprite.Sprite):

    def __init__(self, spell, pos, *groups):
        super().__init__(*groups)
        self.image = pygame.image.load("Sprites/transparent.jpg") …
Run Code Online (Sandbox Code Playgroud)

python pygame

5
推荐指数
1
解决办法
138
查看次数

标签 统计

python ×4

pygame ×3

moviepy ×1

shell ×1

tkinter ×1

user-interface ×1

video ×1