7 сегментный дисплей ткинтер - PullRequest
0 голосов
/ 02 января 2019

Я хочу создать графический интерфейс, который включает 7-сегментный дисплей.Мне нужно иметь возможность иметь 3 дисплея рядом друг с другом.Мой вопрос в основном таков: Семисегментный дисплей в Tkinter

Однако я не могу добавить другой дисплей рядом с ним.Я понимаю, что если я изменю смещение, то это сместит дисплей, но я не вижу ничего общего с добавлением в другой дисплей рядом с ним.

Я понимаю, что это повторяет вопрос, однако я не могу прокомментировать оригиналсообщение.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 января 2019

Вы можете создать другой объект класса Digit с другим смещением.Вот пример.

import tkinter as tk
root = tk.Tk()
screen = tk.Canvas(root)
screen.grid()

offsets = (
    (0, 0, 1, 0),  # top
    (1, 0, 1, 1),  # upper right
    (1, 1, 1, 2),  # lower right
    (0, 2, 1, 2),  # bottom
    (0, 1, 0, 2),  # lower left
    (0, 0, 0, 1),  # upper left
    (0, 1, 1, 1),  # middle
)
# Segments used for each digit; 0, 1 = off, on.
digits = (
    (1, 1, 1, 1, 1, 1, 0),  # 0
    (0, 1, 1, 0, 0, 0, 0),  # 1
    (1, 1, 0, 1, 1, 0, 1),  # 2
    (1, 1, 1, 1, 0, 0, 1),  # 3
    (0, 1, 1, 0, 0, 1, 1),  # 4
    (1, 0, 1, 1, 0, 1, 1),  # 5
    (1, 0, 1, 1, 1, 1, 1),  # 6
    (1, 1, 1, 0, 0, 0, 0),  # 7
    (1, 1, 1, 1, 1, 1, 1),  # 8
    (1, 1, 1, 1, 0, 1, 1),  # 9
)

class Digit:
    def __init__(self, canvas, x=10, y=10, length=20, width=4):
        self.canvas = canvas
        l = length
        self.segs = []
        for x0, y0, x1, y1 in offsets:
            self.segs.append(canvas.create_line(
                x + x0*l, y + y0*l, x + x1*l, y + y1*l,
                width=width, state = 'hidden'))
    def show(self, num):
        for iid, on in zip(self.segs, digits[num]):
            self.canvas.itemconfigure(iid, state = 'normal' if on else 'hidden')

dig = Digit(screen, 10, 10) ##
dig1 = Digit(screen, 40, 10) ##
n = 0
def update():
    global n
    dig.show(n)
    dig1.show(n) ## Control what you want to show here , eg (n+1)%10
    n = (n+1) % 10
    root.after(1000, update)
root.after(1000, update)
root.mainloop()

enter image description here

...