【问题标题】:Python Tkinter Layout ProblemsPython Tkinter 布局问题
【发布时间】:2013-05-11 22:55:38
【问题描述】:

我正在尝试使用 .grid() 来制作 tkinter 布局。我的所有按钮都在左侧对齐,我想在右侧放置一个文本框。问题是当我尝试这样做时,它会弄乱左侧的按钮。我尝试使用多个框架,但它似乎不起作用。有任何想法吗?

【问题讨论】:

    标签: python layout grid tkinter frame


    【解决方案1】:

    关于网格几何管理器最重要的一点是 columnspanrowspan 关键字:

    import Tkinter as tk
    
    root = tk.Tk()
    buttons = [tk.Button(root,text=str(i)) for i in range(6)]
    for i,b in enumerate(buttons):
        b.grid(row=i,column=0)
    
    textbox = tk.Text(root)
    textbox.grid(row=0,column=1,rowspan=6)
    
    root.mainloop()
    

    请注意,这里的典型用法是使用带有正确columnspanrowspan 网格的Frame。然后您可以使用它来管理数据。我上面的替代方法是使用Frame 来保存所有按钮,然后在它旁边网格化Text 小部件:

    import Tkinter as tk
    
    root = tk.Tk()
    frame = tk.Frame(root)
    frame.grid(row=0,column=0)
    buttons = [tk.Button(frame,text=str(i)) for i in range(6)]
    for i,b in enumerate(buttons):
        b.grid(row=i,column=0)
    
    textbox = tk.Text(root)
    textbox.grid(row=0,column=1)
    
    root.mainloop()
    

    【讨论】:

      【解决方案2】:

      如果您使用的是网格几何管理器,则不必为 2 列布局使用框架。您可以使用rowspan 将 Text 小部件的高度调整为按钮的数量:

      from Tkinter import *
      
      root = Tk()
      N = 5
      
      for i in range(N):
          Button(root, text="Button %s" % i).grid(row=i, column=0, padx=5)
      Text(root, width=30).grid(row=0, column=1, rowspan=N, padx=5)
      
      root.mainloop()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-24
        • 2023-03-30
        • 2022-01-19
        • 1970-01-01
        • 2014-03-24
        • 1970-01-01
        • 2020-05-05
        • 2017-12-24
        相关资源
        最近更新 更多