Python Tkinter-columnspan不';似乎不影响信息

Python Tkinter-columnspan不';似乎不影响信息,python,tkinter,Python,Tkinter,我试图用Python(2.7)创建一个简单的界面,Tkinter在第一行有一个用户输入框、浏览按钮和说明,在下面的一行有一个多行的解释 我的问题是,columnspan选项似乎不允许我的消息小部件跨越上面三列的宽度,如下所示: 如何使此消息跨越整个宽度?我还尝试使用width参数,但这似乎与Entry小部件的规模不同 我的代码如下: from Tkinter import * class App(Frame): def __init__(self, *args, **kwargs)

我试图用Python(2.7)创建一个简单的界面,Tkinter在第一行有一个用户输入框、浏览按钮和说明,在下面的一行有一个多行的解释

我的问题是,
columnspan
选项似乎不允许我的
消息
小部件跨越上面三列的宽度,如下所示:

如何使此
消息
跨越整个宽度?我还尝试使用
width
参数,但这似乎与
Entry
小部件的规模不同

我的代码如下:

from Tkinter import *

class App(Frame):

    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        self.grid(sticky=N + W + E + S)

        # set up labels and buttons
        self.folder_text = Label(
            self, text='Select Folder:  ', font='Arial 10', anchor=W
        )
        self.folder_text.grid(row=0, column=0, sticky=W)

        self.input_folder = Entry(
            self, width=40, font='Arial 10'
        )
        self.input_folder.grid(row=0, column=1)

        self.browse_button = Button(
            self, text="Browse", font='Arial 8 bold',
            command=lambda: self.browse_for_folder(self.input_folder)
        )
        self.browse_button.grid(row=0, column=2)

        self.desc = Message(
            self, text='This tool will create a .csv file in the specified folder containing the Time and '
                       'Latitude/Longitude (WGS84) for all TIFF, RAW and JPEG/JPG files contained in the '
                       'folder with this information available.', font='Arial 8', anchor=W
        )
        self.desc.grid(row=1, column=0, columnspan=3, sticky=E + W)

        self.run_button = Button(
            self, text="Run!", font='Arial 10 bold', fg='red',
            command=lambda: self.run(self.input_folder)
        )

        self.run_button.grid(row=2, column=1)

# ---SNIP---

root = Tk()
root.bind('<Escape>', lambda e: root.destroy())
root.resizable(0, 0)
root.title('Get photo geolocations')

app = App(root)
root.mainloop()
从Tkinter导入*
类应用程序(框架):
定义初始化(self,*args,**kwargs):
帧._uu初始化(self,*args,**kwargs)
自网格(粘性=N+W+E+S)
#设置标签和按钮
self.folder_text=标签(
self,text='Select Folder:',font='Arial 10',anchor=W
)
self.folder_text.grid(行=0,列=0,粘滞=W)
self.input\u folder=条目(
self,宽度=40,font='Arial 10'
)
self.input\u folder.grid(行=0,列=1)
self.browse_按钮=按钮(
self,text=“浏览”,font='Arial 8粗体,
command=lambda:self.browse\u查找\u文件夹(self.input\u文件夹)
)
self.browse_button.grid(行=0,列=2)
self.desc=消息(
self,text='此工具将在指定文件夹中创建一个.csv文件,其中包含时间和'
'中包含的所有TIFF、RAW和JPEG/JPG文件的纬度/经度(WGS84)'
“包含此信息的文件夹可用。”,font='Arial 8',anchor=W
)
self.desc.grid(行=1,列=0,列跨度=3,粘性=E+W)
self.run\u按钮=按钮(
self,text=“Run!”,font='Arial 10 bold',fg='red',
command=lambda:self.run(self.input\u文件夹)
)
self.run_按钮.grid(行=2,列=1)
#---剪---
root=Tk()
root.bind(“”,lambda e:root.destroy())
根目录。可调整大小(0,0)
root.title('获取照片地理位置')
app=app(根目录)
root.mainloop()

消息使用纵横比或字符宽度来确定其大小

您可以给它一个宽度,然后它就会工作:

    self.desc = Message(
        self, text='This tool will create a .csv file in the specified folder containing the Time and '
                   'Latitude/Longitude (WGS84) for all TIFF, RAW and JPEG/JPG files contained in the '
                   'folder with this information available.', font='Arial 8', anchor=W, width = 400
    )


或者,您可以渲染窗口,使用
root.geometry()
读取窗口宽度,在小部件上设置宽度,然后在其中设置文本。

消息
使用纵横比或字符宽度确定其大小

您可以给它一个宽度,然后它就会工作:

    self.desc = Message(
        self, text='This tool will create a .csv file in the specified folder containing the Time and '
                   'Latitude/Longitude (WGS84) for all TIFF, RAW and JPEG/JPG files contained in the '
                   'folder with this information available.', font='Arial 8', anchor=W, width = 400
    )


或者,您可以渲染窗口,使用
root.geometry()
读取窗口宽度,设置窗口小部件的宽度,然后将文本设置到窗口中。

如果更改窗口小部件的背景颜色,您将看到它确实跨多个列

消息
小部件的主要功能是在文本中插入换行符,以便在未指定宽度的情况下,文本保持特定的纵横比。如果小部件的宽度大于其自然尺寸,则
消息的文本将不会填充额外的水平空间

如果指定宽度,则忽略纵横比。与宽度表示字符数的
标签不同,
消息的
宽度
选项基于像素(或距离:英寸、厘米、毫米或打印机点)

使用
width
选项的一种简单方法是绑定到小部件的
事件,并将width选项设置为小部件的实际宽度(或宽度减去一点作为边距)

例如:

self.desc.bind("<Configure>", 
    lambda event: event.widget.configure(width=event.width-8))
self.desc.bind(“,
lambda事件:event.widget.configure(width=event.width-8))

如果更改小部件的背景色,您将看到它确实跨越了多个列

消息
小部件的主要功能是在文本中插入换行符,以便在未指定宽度的情况下,文本保持特定的纵横比。如果小部件的宽度大于其自然尺寸,则
消息的文本将不会填充额外的水平空间

如果指定宽度,则忽略纵横比。与宽度表示字符数的
标签不同,
消息的
宽度
选项基于像素(或距离:英寸、厘米、毫米或打印机点)

使用
width
选项的一种简单方法是绑定到小部件的
事件,并将width选项设置为小部件的实际宽度(或宽度减去一点作为边距)

例如:

self.desc.bind("<Configure>", 
    lambda event: event.widget.configure(width=event.width-8))
self.desc.bind(“,
lambda事件:event.widget.configure(width=event.width-8))

@MichelTouw这是一个@MichelTouw这正是我需要它的方式,非常感谢。这正是我需要它的方式,非常感谢。