dragov 发表于 2024-10-20 16:53:33

Tkinter 如何将九九表在Tkinter中显示出标准的三角形格式


from tkinter import *
import time
root=Tk()
root.title("九九表")
def m(a,b):
   for i in range(1,10) :
          for j in range(1,i+1) :
               f=Label(root,
                     text=f"{j}x{i}={i*j}",
                     background=a,
                     foreground=b,
                     font="汉仪醒示体简 14 bold")
               f.pack()
m("indigo","cyan")
mainloop()

如何将九九表在Tkinter中显示出标准的三角形格式?

FishC 发表于 2024-10-20 16:53:37

要在 Tkinter 中以标准的三角形格式显示九九乘法表,可以使用 `grid` 方法,而不是 `pack` 方法,这样可以指定每个 Label 的行和列,从而形成三角形排列。以下是修改后的代码:

from tkinter import *

root = Tk()
root.title("九九表")

def create_multiplication_table(bg_color, fg_color):
    for i in range(1, 10):
      for j in range(1, i + 1):
            label = Label(root,
                        text=f"{j}x{i}={i*j}",
                        background=bg_color,
                        foreground=fg_color,
                        font="汉仪醒示体简 14 bold")
            label.grid(row=i, column=j-1, padx=5, pady=5)

create_multiplication_table("indigo", "cyan")
root.mainloop()

### 解释:
- 使用 `grid(row=i, column=j-1)` 方法将每个 `Label` 放置在相应的行和列上。
- `row=i` 确保了每个乘法结果所在的行与 `i` 相对应。
- `column=j-1` 使得每一行的列数与该行的乘法次数对齐,从而形成一个三角形排列。
- `padx` 和 `pady` 用于增加 Label 之间的间距。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

很cool的阳 发表于 2024-10-20 17:02:39

from tkinter import *
root = Tk()
root.title("九九表")
def draw_table():
    canvas = Canvas(root, width=400, height=400)
    canvas.pack()
   
    # 计算每个格子的宽度和高度
    cell_width = 40
    cell_height = 40
   
    # 绘制九九表
    for i in range(1, 10):
      for j in range(1, i + 1):
            # 计算文本的位置
            x = j * cell_width
            y = 400 - (i + 1) * cell_height + cell_height // 2
            
            # 绘制文本
            canvas.create_text(x + cell_width // 2, y + cell_height // 2,
                               text=f"{j}x{i}={i*j}",
                               font="汉仪醒示体简 14 bold",
                               fill="white")
            
            # 绘制格子
            canvas.create_rectangle(x, 400 - (i + 1) * cell_height,
                                    x + cell_width, 400 - i * cell_height,
                                    fill="indigo" if i + j % 2 == 0 else "cyan")

draw_table()
root.mainloop()

某一个“天” 发表于 2024-10-20 17:43:36

在 Tkinter 中显示九九表(乘法表)并以标准的三角形格式展示,可以通过使用 Label 或 Text 小部件来创建和布局这些数字。以下是一个完整的示例代码,它展示了如何在 Tkinter 中实现这一功能:
python
复制代码
import tkinter as tk

def create_multiplication_table():
    # 创建主窗口
    root = tk.Tk()
    root.title("九九表")
      
    # 创建一个 Text 小部件来显示九九表
    text_widget = tk.Text(root, width=40, height=20, font=("Arial", 16), padx=10, pady=10)
    text_widget.grid(row=0, column=0, sticky="nsew")
      
    # 填充九九表到 Text 小部件中
    for i in range(1, 10):
      line = ""
      for j in range(1, i + 1):
            line += f"{j}*{i}={i*j:2d}\t"# 使用制表符来对齐列
      text_widget.insert(tk.END, line + "\n")
      
    # 配置窗口的网格布局
    for child in root.winfo_children():
      child.grid_configure(padx=10, pady=10)
      
    # 启动主事件循环
    root.mainloop()

if __name__ == "__main__":
    create_multiplication_table()
解释
创建主窗口:使用 tk.Tk() 创建一个主窗口,并设置窗口标题。
创建 Text 小部件:使用 tk.Text 创建一个文本小部件,用于显示九九表。设置了宽度、高度、字体和内边距。
填充九九表:使用嵌套的 for 循环生成九九表的内容,每一行从 1 到 i 的乘法结果,并使用制表符 \t 对齐列。
插入内容:使用 text_widget.insert(tk.END, line + "\n") 将生成的每一行插入到 Text 小部件中。
配置窗口的网格布局:使用 grid_configure 设置子部件的内边距。
启动主事件循环:使用 root.mainloop() 启动 Tkinter 的主事件循环,使窗口保持显示状态。
注意事项
使用 Text 小部件的 insert 方法可以动态添加内容。
使用制表符 \t 对齐每一列,使表格看起来更整齐。
可以根据需要调整字体大小和窗口尺寸。
运行上述代码后,你会看到一个窗口,其中显示了以标准三角形格式排列的九九表。
页: [1]
查看完整版本: Tkinter 如何将九九表在Tkinter中显示出标准的三角形格式