簡體   English   中英

Tkinter:不能在 .!frame2 中使用幾何管理器網格,它已經有由包管理的從屬

[英]Tkinter: cannot use geometry manager grid inside .!frame2 which already has slaves managed by pack

這是我第一次使用tkinter ,我已經對packgrid進行了一些研究。 如何修復此代碼,以便packgrid組件不會交織在一起?

我想為我的復選框使用網格,以便 16 個復選框顯示在與其對應的單詞旁邊的列中。 我可以用包來做這個嗎?

# tkinter will help us with the GUI
import tkinter as tk
from tkinter import filedialog, Text
import os


def data():
    categoriesArray = ["16 words here"] 

    for i in range(16):
        checkbox = tk.Checkbutton(buttonFrame, bg="white")
        checkbox.grid(row=i, column=0, sticky="w")
        tk.Label(canvasFrame, text=categoriesArray[i]).grid(row=i, column=1, sticky="ew")

# Define the scrolling function for the scrollbar
def scrollFunction(event):
    canvas.configure(scrollregion=canvas.bbox("all"), width=200, height=500)

# The root holds the whole app structure. Always attach to root.
root = tk.Tk()

# These two lines literally make the rectangular structure of the app.
canvas = tk.Canvas(root, height = 500, width= 1300, bg="#00008B")
canvas.pack()

# These two lines make the white screen you see on the left of the buttons.
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.8, relheight=0.8, relx=0.03, rely=0.1)

# This is the frame for the buttons on the right
buttonFrame = tk.Frame(root, bg="white")
buttonFrame.place(relwidth=0.13, relheight=0.8, relx=0.85, rely=0.1)

# You need a canvas to define a scrollbar within the app.
# Resource: https://stackoverflow.com/questions/16188420/tkinter-scrollbar-for-frame
canvas=tk.Canvas(buttonFrame)
canvasFrame=tk.Frame(canvas)
scrollbar=tk.Scrollbar(buttonFrame, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)

scrollbar.pack(side="right", fill="y")
canvas.pack(side="left")
canvas.create_window((36,0), window=canvasFrame, anchor='nw')
canvasFrame.bind("<Configure>", scrollFunction)

# Call the data for the categories to show on the right
data()

# This runs the mainframe to work
root.mainloop()

請讓我知道我可以做些什么來使我的問題更好。

我看過但感到困惑的地方: 修復此代碼“無法在 . 已經有由包管理的奴隸'

我修好了它。 checkbox = tk.Checkbutton(buttonFrame, bg="white")應該有canvasFrame而不是buttonFrame

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM