在窗口中放置或分割框架时出现问题(Python 与 Tkinter/TTKbootstrap)

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

我试图将两个标签并排放置,但我希望一个覆盖一半窗户,另一个覆盖另一半,但我已经尝试了所有方法,但没有任何反应,它们只是留在那个角落

how I wanted it to be

我希望它们看起来像我在图像中画的那样,但它们只是呆在角落里

from textwrap import fill
import tkinter as tk
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from PIL import Image, ImageTk


class APP:

    def __init__(self):
        # Criando a janela principal
        self.root = tk.Tk()
        self.root.title("FMD")
        self.root.geometry("1080x600")  # Define o tamanho da janela
        # Impede o redimensionamento da janela
        self.root.resizable(False, False)

        # Carregando a imagem existente
        background_image = Image.open("background.png")

        # Convertendo a imagem para o formato Tkinter PhotoImage
        self.background_photo = ImageTk.PhotoImage(background_image)

        # Criando um rótulo com a imagem como plano de fundo
        self.background_label = tk.Label(
            self.root, image=self.background_photo)
        self.background_label.place(x=0, y=0, relwidth=1, relheight=1)

        # Criando o frame do Dataset
        self.dataset_frame = ttk.Frame(self.root, bootstyle="dark")
        self.dataset_frame.grid(row=0, column=0)

        self.dataset_label = ttk.Label(
            self.dataset_frame, text="Dataset:", bootstyle="inverse-dark")
        self.dataset_label.configure(font=("Arial", 16, "bold"))
        self.dataset_label.pack(side=LEFT)

        # Criando o frame do preview
        self.preview_frame = ttk.Frame(self.root, bootstyle="dark")
        self.preview_frame.grid(row=0, column=1)

        self.preview_label = ttk.Label(
            self.preview_frame, text="Preview:", bootstyle="sucess")
        self.preview_label.configure(font=("Arial", 16, "bold"))
        self.preview_label.pack(side=LEFT)

        # Inicia o loop principal da aplicação
        self.root.mainloop()


# Inicializa a aplicação
app = APP()
python tkinter label frame ttkbootstrap
1个回答
0
投票

我将网格切换为打包(如果我错了,请任何人纠正我,但我找不到“轻松”配置网格列的方法)。 通过使用

winfo_width()
您可以获得窗口/对象的宽度。

from tkinter import *

#Tendrás que volver a agregar todas las imágenes e 
# importaciones, las eliminé para poder probarlas.

class APP:

    def __init__(self):
        # Criando a janela principal
        self.root = Tk()
        self.root.title("FMD")
        self.root.geometry("1080x600")  # Define o tamanho da janela
        # Impede o redimensionamento da janela
        self.root.resizable(False, False)

        # Criando o frame do Dataset
        
        # Esto actualiza los datos 'raíz' utilizados para obtener el ancho.
        self.root.update()
        
        # A continuación, obtenga el ancho de la aplicación y divídalo por dos.
        self.dataset_frame = Frame(self.root, width=round(self.root.winfo_width()/2), height=30)
        self.dataset_frame.pack(side=LEFT, anchor=NW)
        
        # Esto está aquí para que el marco no colapse (sin esta línea el marco tendrá un tamaño: 0x0)
        self.dataset_frame.pack_propagate(False)

        self.dataset_label = Label(self.dataset_frame, text="Dataset:", font=("Arial", 16, "bold"))
        self.dataset_label.pack()

        # Criando o frame do preview
        self.preview_frame = Frame(self.root, width=round(self.root.winfo_width()/2), height=30)
        self.preview_frame.pack(side=LEFT, anchor=NW)
        self.preview_frame.pack_propagate(False)

        self.preview_label = Label(self.preview_frame, text="Preview:", font=("Arial", 16, "bold"))
        self.preview_label.pack()

        # Inicia o loop principal da aplicação
        self.root.mainloop()


# Inicializa a aplicação
app = APP()
© www.soinside.com 2019 - 2024. All rights reserved.