将调整大小按钮网格从 tkinter 转换为自定义 tkinter 时遇到问题

问题描述 投票:0回答:1

所以,我一直在尝试制作一个可以根据窗口大小调整大小的按钮网格。我设法在 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()

this is what i got when i run this(只有绿色部分可以点击)

python-3.x tkinter customtkinter
1个回答
0
投票

当您在

text=''
中设置
ctk.CTkButton(...)
时,不会创建内部标签。它会弄乱绘图并产生问题。

只需将

text=''
更改为
text=' '
(创建内部标签)即可解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.