2012-10-29 31 views
0

我在计算如何正确使用tkinter网格时遇到了一些麻烦。我只想让两个标签并排出现。在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() 

回答

2

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

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

+0

原谅我,我是新一般要使用TKinter和Python,但我我不完全确定我应该参考什么。我上面更新了我的代码。我应该引用master = frame吗? – user1104854

0

要定位并排即label1和label2 2个标签的一面:
label1.grid(column=0, row=0)
label2.grid(column=1, row=0)

应该这样做