import tkinter as tkimport randomdef generate_color(): """生成一个随机颜色""" r = lambda: random.randint(0, 255) return '#{:02X}{:02X}{:02X}'.format(r(), r(), r())def create_grid(n): """在n*n方格内生成不同颜色的方格""" root = tk.Tk() for i in range(n): for j in range(n): color = generate_color() frame = tk.Frame(root, bg=color, width=50, height=50) frame.grid(row=i, column=j) root.mainloop()if __name__ == '__main__': n = 5 # 修改n的值来生成不同大小的方格 create_grid(n)修改这段代码,使得显示方格边框
时间: 2023-07-16 16:11:29 浏览: 48
修改代码如下,增加了 `highlightthickness` 和 `highlightbackground` 两个参数来显示边框:
```
import tkinter as tk
import random
def generate_color():
"""生成一个随机颜色"""
r = lambda: random.randint(0, 255)
return '#{:02X}{:02X}{:02X}'.format(r(), r(), r())
def create_grid(n):
"""在n*n方格内生成不同颜色的方格"""
root = tk.Tk()
for i in range(n):
for j in range(n):
color = generate_color()
frame = tk.Frame(root, bg=color, width=50, height=50, highlightthickness=1, highlightbackground="black")
frame.grid(row=i, column=j)
root.mainloop()
if __name__ == '__main__':
n = 5 # 修改n的值来生成不同大小的方格
create_grid(n)
```
可以根据需要修改 `highlightbackground` 参数来改变边框颜色。
相关问题
import tkinter as tk class App: def __init__(self, master=None): if master is None: master = tk.Tk() master.title("My App") master.geometry("400x300") self.master = master self.menu_bar = tk.Menu(self.master, tearoff=0) self.menu_bar.pack() self.create_menu() def create_menu(self): self.menu_bar.delete(1, tk.END) self.menu_bar.insert(tk.END, "Option") self.menu_bar.insert(tk.END, "Option") root = tk.Tk() app = App(root) root.mainloop() 报错self.tk.call(_tkinter.TclError: can't pack ".!menu": it's a top-level window
这个错误是因为你在menu_bar上使用了pack方法,而menu_bar是一个Menu对象,而Menu对象并不支持pack方法。你可以使用add_cascade方法将Menu对象添加到主菜单栏中,而不是使用pack方法。例如:
```
import tkinter as tk
class App:
def __init__(self, master=None):
if master is None:
master = tk.Tk()
master.title("My App")
master.geometry("400x300")
self.master = master
self.menu_bar = tk.Menu(self.master, tearoff=0)
self.master.config(menu=self.menu_bar) # 设置菜单栏
self.create_menu()
def create_menu(self):
option_menu = tk.Menu(self.menu_bar, tearoff=0)
option_menu.add_command(label="Option 1")
option_menu.add_command(label="Option 2")
self.menu_bar.add_cascade(label="Options", menu=option_menu)
root = tk.Tk()
app = App(root)
root.mainloop()
```
这个代码创建了一个菜单栏,并在菜单栏中添加了一个名为“Options”的菜单,菜单中包含两个选项“Option 1”和“Option 2”。注意,在这个例子中,我们使用了add_cascade方法将option_menu添加到了menu_bar中。
解释这行代码 if sys.version_info.major == 2: import Tkinter as tk else: import tkinter as tk
这行代码主要是根据当前Python解释器的版本来导入Tkinter或者tkinter模块。如果当前Python版本是2.x,就导入Tkinter模块并将其重命名为tk;如果当前Python版本是3.x,就导入tkinter模块并将其重命名为tk。这样做的目的是为了保证代码在不同版本的Python解释器上都能够正常运行。