问题描述
我有两个 python 文件,一个用于保存之前制作的所有数据,另一个用于使用 pygame 在屏幕上正确显示数据的函数文件。
--功能--
我的想法是将段的显示按字母顺序命名为 A、B、C、D、E、F、G
在这里,到目前为止,每个段都在显示,但如果你在我的 data.py 代码中看到,你可以看到有一个名为“final_data”的字典,其中每个数字都有它的二进制代码,这只是意味着“有多少段必须发光。 ..”注意:- '1' 表示发光,'0' 表示不发光,你可以说这些是按钮。每个按钮都有一个 [x,y,width] 列表,height] 来显示在屏幕上。 我还给出了二进制文件和位置。字典工作正常,问题在于它在我的第二个文件“functions.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)