首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkinter算法编写器

tkinter算法编写器
EN

Stack Overflow用户
提问于 2020-02-20 12:43:52
回答 1查看 45关注 0票数 0

我正在编写一个算法,提供一个tkinter程序作为输出(我希望我自己解释过),该程序通过拖动组合框、文本.进入一个空间并记住坐标。我决定用玩偶游戏来做这件事,(我从互联网上提取了这个程序的骨架,然后修改了它)。我遇到了几个问题:

  • 我在插入多个图像时遇到了问题(目前我只插入了一个),
  • 我无法记住坐标,我尝试使用print (事件),但是它不起作用,
  • 我不能将图像插入根的特定点。

这是我的代码:

代码语言:javascript
复制
import os,sys
import pygame as pg
pg.init()
a=0
b=0
c=200
d=200
event = pg.event.poll()
Sfondo = pg.image.load("Sfondo.jpg")


def DisegnaBackground (a,b):
    Screen.blit(Sfondo,(a,b))


class Character:

    def __init__(self,rect):
        self.rect = pg.Rect(rect)
        self.click = False
        self.image = pg.image.load("ComboBox.png").convert()
        Screen.blit(self.image, (c,d))

    def update(self,surface):
        if self.click:
            self.rect.center = pg.mouse.get_pos()
        surface.blit(self.image,self.rect)


def main(Surface,Player):
    game_event_loop(Player)
    DisegnaBackground (a,b)
    Player.update(Surface)


def game_event_loop(Player):
    for event in pg.event.get():
        if event.type == pg.MOUSEBUTTONDOWN:
            if Player.rect.collidepoint(event.pos):
                Player.click = True
        elif event.type == pg.MOUSEBUTTONUP:
            Player.click = False
        elif event.type == pg.QUIT:
            pg.quit(); sys.exit()


if __name__ == "__main__":

    os.environ['SDL_VIDEO_CENTERED'] = '1'
    pg.init()
    Screen = pg.display.set_mode((1500,800))
    MyClock = pg.time.Clock()
    MyPlayer = Character((0,0,200,24))
    MyPlayer.rect.center = Screen.get_rect().center
    while 1:
        main(Screen,MyPlayer)
        pg.display.update()
        MyClock.tick(60)

        print(event)
EN

回答 1

Stack Overflow用户

发布于 2020-02-20 14:26:16

有几个问题。首先,确保不要混合全局变量和局部变量。尝试像这样重写这个函数:

代码语言:javascript
复制
def DisegnaBackground (surface, a, b):
    surface.blit(Sfondo, (a, b))

要使此操作正常,您还必须更新您的主服务器:

代码语言:javascript
复制
def main(Surface,Player):
    game_event_loop(Player)
    DisegnaBackground (Surface, a, b)
    Player.update(Surface)

最后,您不需要在创建之后立即显示您的字符,因此您可以将init函数保留为

代码语言:javascript
复制
    def __init__(self,rect):
        self.rect = pg.Rect(rect)
        self.click = False
        self.image = pg.image.load("ComboBox.png").convert()

希望能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60320250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档