鱼C论坛

 找回密码
 立即注册
查看: 121|回复: 3

[已解决]Tkinter 如何将九九表在Tkinter中显示出标准的三角形格式

[复制链接]
发表于 2024-10-20 16:53:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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中显示出标准的三角形格式?
最佳答案
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 对齐每一列,使表格看起来更整齐。
可以根据需要调整字体大小和窗口尺寸。
运行上述代码后,你会看到一个窗口,其中显示了以标准三角形格式排列的九九表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 对齐每一列,使表格看起来更整齐。
可以根据需要调整字体大小和窗口尺寸。
运行上述代码后,你会看到一个窗口,其中显示了以标准三角形格式排列的九九表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表