dragov 发表于 4 天前

九九表的输出格式问题

from tkinter import *
root=Tk()
for i in range(1,10):
      for j in range(1,i+1):
                b=Button(root,
                         text=f"{j}x{i}={i*j}")
                b.pack()
mainloop()

怎么能输出如图所示的九九表呢 ?

FishC 发表于 4 天前

要输出整齐排列的九九表,需要使用 grid() 布局管理器而不是 pack()。以下是修改后的代码:


from tkinter import *

root = Tk()

for i in range(1, 10):
    for j in range(1, i+1):
      # 使用grid布局,设置行和列的位置
      b = Button(root,
                  text=f"{j}×{i}={i*j}",
                  width=8,   # 设置固定宽度
                  height=2)# 设置固定高度
      b.grid(row=i-1, column=j-1, padx=2, pady=2)# 行列索引从0开始

root.mainloop()


关键修改说明:
1. 将 pack() 改为 grid(row, column)
2. 添加 width 和 height 参数统一按钮尺寸
3. 使用 padx 和 pady 设置间距
4. 注意行列索引从0开始,所以用 i-1 和 j-1

这样就能得到行列对齐的九九乘法表界面了。

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

萧随风 发表于 4 天前

为什么要用tk?
for i in range(1,10):
    for j in range(1,1+i):
      print('{0}*{1}={2}\t'.format(j,i,i*j),end = '')
    print()

dragov 发表于 4 天前

本帖最后由 dragov 于 2025-11-11 08:46 编辑

萧随风 发表于 2025-11-8 09:03
为什么要用tk?
for i in range(1,10):
    for j in range(1,1+i):

题目要求必须使用 Tkinter !

ydwb 发表于 4 天前

用Tkinter的界面效果不错的:from tkinter import *
from tkinter import ttk

# 创建主窗口
root = Tk()
root.title("九九乘法表")
root.geometry("1100x720")
root.configure(bg='#8088cc')# 设置背景色为浅蓝色

# 创建样式对象
style = ttk.Style()
style.theme_use('alt')

# 配置按钮样式
style.configure('Custom.TButton',
                background='lightgreen',
                foreground='red',
                borderwidth=4,
                focuscolor='pink',
                font=('Arial', 10, 'bold'),
                width=14,
                padding=(5, 10))

style.map('Custom.TButton',
          background=[('active', 'pink'), ('pressed', '#f0f8ff')])

# 创建标题
title_label = Label(root,
                  text="九九乘法表",
                  font=('kaiti', 24, 'bold'),
                  fg='#2c3e50',
                  bg='#f0f822')
title_label.pack(pady=20)

# 创建主框架
main_frame = Frame(root, bg='#0088ff')
main_frame.pack(expand=True)

# 创建九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
      # 使用ttk按钮,应用自定义样式
      b = ttk.Button(main_frame,
                     text=f"{j} × {i} = {i * j}",
                     style='Custom.TButton')
      b.grid(row=i - 1, column=j - 1, padx=3, pady=3, sticky='nsew')

      # 配置网格权重,使按钮均匀分布
      main_frame.grid_columnconfigure(j - 1, weight=1)
    main_frame.grid_rowconfigure(i - 1, weight=1)

# 添加底部说明
footer_label = Label(root,
                     text="点击任意按钮可查看对应乘法结果",
                     font=('Arial', 10),
                     fg='#7f8c8d',
                     bg='#f0f8ff')
footer_label.pack(pady=10)


# 添加交互功能
def on_button_click(event):
    # 获取按钮文本
    text = event.widget.cget('text')
    # 更新标题显示当前选择的乘法
    title_label.config(text=f"九九乘法表:{text}")


# 为所有按钮绑定点击事件
for child in main_frame.winfo_children():
    child.bind('<Button-1>', on_button_click)

# 运行主循环
root.mainloop()

yemanet 发表于 3 天前

这个代码最简单的99乘法表了
for i in range(1, 9):
    for j in range(1, i + 1):
      print(f"{j}x{i}={i * j}",end="\t")
    print()

dragov 发表于 昨天 08:47

ydwb 发表于 2025-11-8 14:01
用Tkinter的界面效果不错的:

您这个程序代码有点太复杂了 !

ydwb 发表于 5 小时前

import tkinter as tk
root = tk.Tk()
root.title("九九乘法表")
root.geometry("850x250")
text_widget = tk.Text(root, font=("Consolas", 10), bg='navy', fg='#ff5500', width=70, height=30)
text_widget.pack(padx=20, pady=10)
for i in range(1, 10):
    line = ""
    for j in range(1, i + 1):
      line += f"{j}×{i}={i*j:2}"
    text_widget.insert(tk.END, line + "\n")
root.mainloop()
页: [1]
查看完整版本: 九九表的输出格式问题