簡體   English   中英

使用帶有 Tkinter 的網格的框架中不能容納多個 Label

[英]Can't fit more than one Label in a Frame using grids with Tkinter

我正在制作一個小部件來顯示天氣。 我正在嘗試使用網格工具在一個框架內放置多個標簽。 我在網格中插入的第一個 Label 似乎占據了所有位置。 無論我做什么,第二個 label 都會像這樣卡在框架外: TKinter UI 圖像

import tkinter as tk

class App:
    
    def __init__(self, root):
        self.root = root
        self.root.resizable(False, False)
        self.root.geometry('1920x1080')
        self.root.configure(bg='#4F6367')

        self.weather = Containers(root, 'Weather', 1200, 130)
        self.weather.grid(pady=50, padx=50)
        self.weather.grid_propagate(0)
        self.weather.columnconfigure(0, weight=1)
        self.weather.columnconfigure(1, weight=1)

        self.sun = tk.Label(self.weather, text='Sunrise time')
        self.sun.grid(row=1, column=0)
        self.sun2 = tk.Label(self.weather, text='Sunset time')
        self.sun2.grid(row=1, column=1)

class Containers(tk.Frame):

    def __init__(self, root, name, width, height):
        super(Containers, self).__init__(root, width=width, height=height, bg='#F4F2F3')
        self.grid_propagate(0)
    #Container - Header
        self.label_frame = tk.Frame(self, width=width, height=20, bg='#754043')
        self.label_frame.grid_propagate(0)
        self.label_frame.grid(sticky='N')
    #Container - Header - Label
        self.label = tk.Label(self.label_frame, text=name, bg='#754043', fg='#F4F2F3')
        self.label.grid(sticky='WN')


if __name__ == "__main__":
    root = tk.Tk()
    user_interface = App(root)
    root.mainloop()

這是我的第一個大型 TKinter 項目,因此結構可能並不理想。 謝謝。

您在self.weather框架中有兩列,這意味着self.label_frame應該跨越兩列:

#Container - Header
    self.label_frame = tk.Frame(self, width=width, height=20, bg='#754043')
    self.label_frame.grid_propagate(0)
    self.label_frame.grid(columnspan=2, sticky='N')
    # Span two columns --------^

暫無
暫無

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

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