python - 7 段显示tkinter
问题描述
我想创建一个包含 7 段显示的 GUI。我需要能够让 3 个显示器彼此相邻。我的问题基本上是这样的:Tkinter 中的七段显示
但是,我无法在它旁边添加另一个显示器。我知道如果我改变偏移量,它会移动显示器,但我似乎与在它旁边添加另一个显示器无关。
我知道这是在重复一个问题,但是我无法对原始帖子发表评论。
任何帮助将不胜感激。
解决方案
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()
推荐阅读
- java - 单词生成器中无限循环文本的问题
- python - 如何将 Numpy 中浮点数的精度设置为 52 位小数?
- html - Safari 在元素之间留出空间
- php - Symfony\Component\Debug\Exception\FatalThrowableError:找不到类“用户”
- r - 删除 R 中具有相似(不相同)字符串的行
- save - tensorflow.js 如果存在加载保存的模型,或者如果不存在,则在每个 epochEnd 回调中创建并保存模型的检查点
- node.js - 如何在认证云函数中调用存储触发云函数?
- javascript - 有没有办法通过 react-virtualized 将 ref 设置为 List ?
- ios - error Recaptcha Verifier 仅支持在 iOS 上的浏览器 HTTP/HTTPS 环境中
- javascript - IndexedDB - 这是否可以保持初始数据排序?