【问题标题】:tkinter frame not working properlytkinter 框架无法正常工作
【发布时间】:2018-06-15 16:33:01
【问题描述】:

谁能帮助我为什么columnspan在这段代码中没有任何效果:

import tkinter as tk

root = tk.Tk()

frametop = tk.Frame(root).grid(row = 0, column = 0, columnspan = 2)
labeltest1 = tk.Label(frametop, text="A").grid(row = 0, column = 0)
labeltest2 = tk.Label(frametop, text="B").grid(row = 0, column = 1)
labeltest3 = tk.Label(frametop, text="C").grid(row = 0, column = 2)

framebottom = tk.Frame(root).grid(row = 1, column = 0)
labeltest4 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 0)
labeltest5 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 1)
labeltest6 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 2)

root.mainloop()

labeltest1、labeltest2、labeltest3 分布在类似于framebottom 的小部件的列中。我想要的是 frame 内的 3 列网格,columnspan = 2 具有同一行。
类似的东西:

||   A    |   B   |   C    ||  
| Hello World | Hello World | Hello World |

【问题讨论】:

  • 不同框架中的列完全不相关。

标签: python-3.x tkinter grid frame


【解决方案1】:

您的代码的组织方式,Frames 无效;当您 grid 与创建小部件在同一行时,None 被返回并存储在您用于 Frames 和 Label 的变量中。结果是标签直接插入root。

以下内容相同,根据您的要求放置标签。

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="A").grid(row=0, column=0, columnspan=2)
tk.Label(root, text="B").grid(row=0, column=2, columnspan=2)
tk.Label(root, text="C").grid(row=0, column=4, columnspan=2)

tk.Label(root, text="Hello World").grid(row=1, column=0, columnspan=3)
tk.Label(root, text="Hello World").grid(row=1, column=3, columnspan=3)
tk.Label(root, text="Hello World").grid(row=1, column=6, columnspan=3)

root.mainloop()

GUI 外观(osX):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2013-09-23
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多