微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在列表中添加矩形以在 pygame 中以 7 段数字显示

如何解决在列表中添加矩形以在 pygame 中以 7 段数字显示

我有两个 python 文件一个用于保存之前制作的所有数据,另一个用于使用 pygame 在屏幕上正确显示数据的函数文件

--功能--

我的想法是将段的显示按字母顺序命名为 A、B、C、D、E、F、G

PLZ refer to this image

在这里,到目前为止,每个段都在显示,但如果你在我的 data.py 代码中看到,你可以看到有一个名为“final_data”的字典,其中每个数字都有它的二进制代码,这只是意味着“有多少段必须发光。 ..”注意:- '1' 表示发光,'0' 表示不发光,你可以说这些是按钮。每个按钮都有一个 [x,y,width] 列表,height] 来显示在屏幕上。 我还给出了二进制文件和位置。字典工作正常,问题在于它在我的第二个文件“functions.py”中的实现。

--代码--

我的第一个文件是data.py,代码是......

nums = (0,1,2,3,4,5,6,7,8,9)

binaries = ([1,0],[1,1],[0,1])

positions = ([200,110,10,50],[200,170,[150,220,50,10],[140,100,160,10])


final_data = {'0':{"1": [[200,10]],"0": [[150,10]]},'1':{"1": [[200,50]],'2':{"1": [[200,"0": [[200,50]]},'3':{"1": [[200,"0": [[140,'4':{"1": [[200,'5':{"1": [[200,'6':{"1": [[200,'7':{"1": [[200,'8':{"1": [[200,'9':{"1": [[200,50]]}
}

"""
A,B,C,D,E,F,G
1,0
1,1
1,1
0,1
"""

我的第二个文件functions.py

import pygame,sys
pygame.init()

size = width,height = 400,400
running = True
segments = []
screen = pygame.display.set_mode(size)

def draw_rect(x,width,height):
    pygame.draw.rect(screen,(0,0),(x,height))

def digits():
    #A
    draw_rect(200,50)
    #B
    draw_rect(200,50)
    #C
    draw_rect(150,10)
    #D
    draw_rect(140,50)
    #E
    draw_rect(140,50)
    #F
    draw_rect(150,10)
    #G
    draw_rect(150,10)



while running:
    screen.fill((148,241,251))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    key = pygame.key.get_pressed()
    if key[pygame.K_q]:
        run = False
        sys.exit()

    digits()
    pygame.display.update()

**请在评论中告诉我你喜欢我的想法吗?并且提问的格式是否正确。 **

解决方法

您根本不需要f <- function(x) x[rowSums(x == "",na.rm=T) == 0,] merge(f(file1),f(file2),all=TRUE) # date X # 1 2021-01-01 foo # 2 2021-01-02 bar # 3 2021-01-03 bar # 4 2021-01-04 foo 。只需编写一个函数 select oh.* from (select oh.*,row_number() over (partition by order_id order by update_toime) as seqnum from order_history oh ) oh where seqnum = 2 order by update_time;

final_data

然后这样称呼它:

draw_digit

添加额外的 def draw_digit(surf,color,i): for j,on in enumerate(binaries[i]): if on: pygame.draw.rect(surf,positions[j]) 参数以在一行中显示多个数字:

draw_digit(screen,"black",0)
offset


最小示例:

repl.it/@Rabbid76/PyGame-7SegementDisplay

data.py

def draw_digit(surf,offset,pygame.Rect(positions[j]).move(offset,0))

functions.py

draw_digit(screen,2)
draw_digit(screen,100,3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。