首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速Tkinter格式问题

快速Tkinter格式问题
EN

Stack Overflow用户
提问于 2012-07-18 02:01:29
回答 2查看 158关注 0票数 1

我有一堆这样的框架:

代码语言:javascript
复制
    +--+
    |  |
  +-+--+-+
  |      |
+-+------+-+
|          |
+----------+

但我希望他们是这样的:

代码语言:javascript
复制
        +--+
        |  |
    +---+--+
    |      |
+---+------+
|          |
+----------+

做这件事最好的方法是什么?

正在使用pack,无法让他们表现正确。由于某些原因,使用grid根本没有显示它们,并且我的程序挂起

代码语言:javascript
复制
# Main script
root = Tk()
root.geometry('500x500')
for task in TaskList:
    GuiTools.TaskBox.TaskBox(root, task)
root.mainloop() # program hangs from this line, to the point of having to use kill to close it



# Taskbox class
class Taskbox(master, task):
    __init__(self)
        self.TaskFrame = Frame(master, borderwidth=3, relief=RAISED)
         . . .
        Putting stuff in frame
         . . .
        self.TaskFrame.pack() # Gives result 1
        #self.TaskFrame.grid(column=1, sticky='ne') # no display, causes hang
EN

Stack Overflow用户

回答已采纳

发布于 2012-07-18 02:39:25

在不知道你在帧中放了什么的情况下回答这个问题有点棘手。@sc0tt是正确的,你可能想要使用sticky=tk.E,然而,这可能不足以获得你想要的东西,因为你的框架可能会根据你放在里面的东西来调整自己的大小(除非你使用myframe.grid_propagate(False))。解决这个问题的方法是把columnspan关键字也放进去。

这是一个愚蠢的循环,它会做你想做的事情:

代码语言:javascript
复制
import Tkinter as tk
root = tk.Tk()
frames = []
for i in range(3):
    f = tk.Frame(root)
    f.grid(row=i, column=0, columnspan=i+1, sticky=tk.E)
    frames.append(f)

#Now, you can add buffer spaces (frames) into the grid at 
# `row=0,column=0`, `row=0,column=1` and `row=1,column=1` if you need it. 

root.mainloop()

这有效地划分了网格,如下所示:

代码语言:javascript
复制
+----+-----+-----+
|    |     |     |
+----+-----+-----+
|    |           |
+----+-----------+
|                |
+----------------+
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11528236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档