不能将 .place 用于 tkinter 中的标签框

Cannot use .place for a label frame in tkinter

我一直致力于为我的 window 添加标签框架,但出于某种原因,每当我使用 .place 时,它​​都不会放置框架。虽然网格和包装工作。我试图通过坐标将标签框放在屏幕中间。这是我的代码(错误出在 createstock 函数的某处):

import tkinter as tk
import yfinance

class StockWindow:
    def __init__(self,master,number):

        self.master = master
        self.frame=tk.Frame(self.master)
        self.frame.pack()
        w, h = master.winfo_screenwidth(), master.winfo_screenheight()
        self.master.overrideredirect(1)
        self.master.geometry("%dx%d+0+0" % (w, h))
        self.master.focus_set() # <-- move focus to this widget
        self.master.bind("<Escape>", lambda e: e.widget.quit())
        #################################################
        ## Labels
        self.amountChanged = tk.Label(self.master,text = "00")
        self.amountChanged.place(x=w/2,y=h/2)
        self.highestChangedStock = tk.Label(self.master,text = "Amzn")
        self.highestChangedStock.place(x=w/2+10,y=h/2+40)
        self.lowestChangedStock = tk.Label(self.master,text = "this one")
        self.stockTips = tk.Label(self.master,text = "Buy some")
        self.stockTips.place(x=2,y=777)
        self.marketChange = tk.Label(self.master,text = "Alot!")
        self.marketChange.place(x=23,y=66)
        self.stockNews = tk.Label(self.master,text = "News Here!")
        self.stockNews.place(x=23,y=234)
        self.stockNewds = tk.Label(self.master,text = "News Hewewere!")
        self.stockNewds.place(x=300,y=300)
        ## Buttons
        self.seeAllStocks = tk.Button(self.master,text ="do you wanna see more stocks?")
        self.seeAllStocks.place(x=0,y=0)
        self.goBack =tk.Button(self.master,text = "Go back",command=self.close_windows)
        self.goBack.place(x=100,y=100)
        self.createStock("afdhsfdhsfhsfghsgfhsdg",3,30)
        #########
    def createStock(self,name,pricechange,placement):
        stockframe = tk.LabelFrame(self.frame,text='')
        #stockframe.size(200)
        stockframe.place(x=400,y=400,height=10,width=10) 
        #stockframe.pack(expand='yes',fill='both')
        #stockframe.grid(column=5,row=5)
        tempLabel = tk.Label(stockframe,text=name)

        tempLabel.pack()
    def close_windows(self):
        self.master.destroy()

问题是 self.frame 被用作标签框架的父级,但它的高度为 1x1,因为其中没有任何内容。因此,放置在其中的任何小部件也将不可见。

如果您想使用 place 使小部件居中,最简单的解决方案是使用相对 x 和 y 坐标为 0.5 的相对坐标(即:宽度和高度的 50% window)。

例如,您不需要将标签框放在根 window 内的标签内。只需删除 self.frame 并使用标签框架的相对坐标:

    stockframe = tk.LabelFrame(self.master,text='')
    stockframe.place(relx=.5, rely=.5)