簡體   English   中英

tkinter 框架內的網格?

[英]Grid within frame in tkinter?

我正在嘗試在 python tinker 中構建一個網格結構,該網格結構彼此並排放置,中間沒有任何可用空間,但我不知何故無法實現這一點。

任何人都可以幫助我做錯什么嗎?

這是代碼。

import tkinter as tk


window = tk.Tk()

window.geometry("700x600")
frame1=tk.Frame(window,width=350,height=400,bg='black')
frame1.grid(row=0,column=0,rowspan=1,columnspan=1)


frame2=tk.Frame(window,width=350,height=600,bg='white')
frame2.grid(row=0,column=1)

frame3=tk.Frame(window,width=350,height=200,bg='red')
frame3.grid(row=1,column=0,rowspan=1,columnspan=1)


window.mainloop()

在此處輸入圖片說明

這是我得到的輸出,雖然我想要的是黑框和紅框之間沒有任何間隙地組合在一起,以便總高度保持 600。

問題是,因為frame2在第二列比更高的frame1到它的左側。 要解決這個問題,只需指定它跨越frame1frame3占據的兩行。

import tkinter as tk


window = tk.Tk()
window.geometry("700x600")

frame1=tk.Frame(window, width=350, height=400, bg='black')
frame1.grid(row=0, column=0, rowspan=1, columnspan=1)

frame2=tk.Frame(window, width=350, height=600, bg='white')
frame2.grid(row=0, column=1, rowspan=2)  # Added rowspan here.

frame3=tk.Frame(window, width=350, height=200, bg='red')
frame3.grid(row=1, column=0, rowspan=1, columnspan=1)

window.mainloop()

結果:

結果截圖

問題是在rowspan的說法frame2

import tkinter as tk


window = tk.Tk()

window.geometry("700x600")
frame1 = tk.Frame(window, width=350, height=400, bg='black')
frame1.grid(row=0, column=0, rowspan=1, columnspan=1)

frame2 = tk.Frame(window, width=350, height=600, bg='white')
frame2.grid(row=0, column=1, rowspan=2) # here add rowspan = 2 argument

frame3 = tk.Frame(window, width=350, height=200, bg='red')
frame3.grid(row=1, column=0, rowspan=1, columnspan=1)


window.mainloop()

發生這種情況是因為您在左側有 2 個框架,它們各自占據一行(總共 2 行),並且您需要將右側的白色框架跨越到 2 行以獲得您想要的網格布局(使它們在右側相等和左),否則它會因為第 0 (2) 列中的幀數和第 1 (1) 列中的幀數之間的差異而變得混亂。

更改代碼后得到的輸出。

暫無
暫無

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

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