【问题标题】:7 Segment display tkinter7 段显示tkinter
【发布时间】:2019-05-28 22:48:11
【问题描述】:

我想创建一个包含 7 段显示器的 GUI。我需要能够让 3 个显示器彼此相邻。 我的问题基本上是这样的:Seven segment display in Tkinter

但是,我无法在它旁边添加另一个显示器。我知道,如果我改变偏移量,它会移动显示器,但我似乎与在它旁边添加另一个显示器无关。

我知道这是在重复一个问题,但是我无法对原始帖子发表评论。

任何帮助将不胜感激。

【问题讨论】:

标签: python user-interface tkinter display


【解决方案1】:

您可以创建另一个具有不同偏移量的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()

【讨论】:

  • 谢谢,没想到这么简单,哎呀!
猜你喜欢
  • 2012-03-10
  • 2018-02-05
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多