【问题标题】:label layout using grid in tkinter在 tkinter 中使用网格进行标签布局
【发布时间】:2012-10-29 17:53:30
【问题描述】:

我在弄清楚如何在 tkinter 中正确使用网格时遇到了一些麻烦。我只想让两个标签并排出现。

当我执行以下操作时,它们会出现在与我的应用程序不同的窗口中。我很困惑,因为我的应用程序上有我想要的按钮(不使用网格),但我不太清楚网格中的标签。

    //this is just a snippet from a function
    self.root = tk.Tk()
    tk.Label(master=self.root, text=directory).grid(row=0,column=0)
    tk.Label(master=self.root, text=directory).grid(row=0,column=1)

根窗口是在应用程序的不同部分创建的,所以我在这里所做的只是创建另一个(我认为)。我只希望标签出现在已经创建的窗口中,但我不知道我应该引用它。 这是在一个单独的文件中,其中包含带有上述代码的文件

from Tkinter import *
import tkinter as tk
import widgetActions
import shutil

class mywidgets(widgetActions.Actions):

def __init__(self,root):
    frame = tk.Frame(root)
    self.makeMenuBar(frame)
    frame.pack()
    frame.config(width=400)
    self.body()
    return


def makeMenuBar(self,frame):
    menubar = Frame(frame,relief=RAISED,borderwidth=1)
    menubar.pack()


    mb_file = Menubutton(menubar,text='file')
    mb_file.pack(side=LEFT)
    mb_file.menu = Menu(mb_file)


    mb_file.menu.add_command(label='open', command = self.openfile)
    mb_file.menu.add_command(label='close', command = menubar.quit)

    mb_file['menu'] = mb_file.menu
    return

def body(self):
    self.filename()


def main():
root = tk.Tk()
k=mywidgets(root)
root.title('menu bar')
root.mainloop()
main()

【问题讨论】:

    标签: python user-interface widget tkinter


    【解决方案1】:

    您不能创建Tk 的两个实例。正如您所观察到的,您将获得两个窗口。这不是唯一的问题,只是最明显的问题。

    您需要传入包含这些标签的 winget 的引用。或者,将根窗口存储为全局变量,或作为对象的属性。

    【讨论】:

    • 请原谅,我是 tkinter 和 python 的新手,但我不太确定我应该参考什么。我在上面更新了我的代码。我应该引用 master = frame 吗?
    【解决方案2】:

    要并排放置 2 个标签,即 label1 和 label2:
    label1.grid(column=0, row=0)
    label2.grid(column=1, row=0)

    应该这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2016-03-14
      • 2011-05-23
      • 2012-04-01
      • 1970-01-01
      • 2018-05-22
      • 2017-01-27
      相关资源
      最近更新 更多