所以,我一直在尝试制作一个可以根据窗口大小调整大小的按钮网格。我设法在 Tkinter 中找到了一个解决方案,我尝试过并且它有效,但是当我尝试使用等效的 customtkinter 代码时。它不再按预期工作。
我使用的常规Tkinter代码如下:
import tkinter as tk
from tkinter import ttk
class mapMaker:
def __init__(self, master, grid_size = (16, 9)):
super().__init__()
self.master = master
self.gridsize = grid_size
tk.Grid.rowconfigure(self.master, 0, weight = 1)
tk.Grid.columnconfigure(self.master, 0, weight=1)
self.frame = ttk.Frame(self.master)
self.frame.grid(row= 0, column=0, sticky="news")
for row_index in range(self.gridsize[1]):
tk.Grid.rowconfigure(self.frame, row_index, weight = 1)
for col_index in range(self.gridsize[0]):
tk.Grid.columnconfigure(self.frame, col_index, weight = 1)
btn = tk.Button(self.frame, text= '',
bg = "white")
btn.grid(row=row_index, column=col_index, sticky="news")
if __name__ == "__main__":
root = tk.Tk()
app = mapMaker(root)
root.mainloop()
import customtkinter as ctk
from tkinter import ttk
class MapMaker:
def __init__(self, master, grid_size = (16, 9)):
super().__init__()
self.master = master
self.gridsize = grid_size
self.frame = ttk.Frame(self.master)
self.frame.grid(row = 0, column = 0, sticky= "news")
self.master.grid_rowconfigure(0, weight = 1)
self.master.grid_columnconfigure(0, weight = 1)
for row in range(self.gridsize[1]):
self.frame.grid_rowconfigure(row, weight = 1)
for column in range(self.gridsize[0]):
self.frame.grid_columnconfigure(column, weight = 1)
btn = ctk.CTkButton(self.frame, text = '',)
btn.grid(row = row, column = column, sticky = "news")
if __name__ == "__main__":
root = ctk.CTk()
app = MapMaker(root)
root.mainloop()
当您在
text=''
中设置ctk.CTkButton(...)
时,不会创建内部标签。它会弄乱绘图并产生问题。
只需将
text=''
更改为 text=' '
(创建内部标签)即可解决问题。