Tkinter:在网格布局中获取图像上方的图像

时间:2013-04-07 15:51:44

标签: python layout user-interface tkinter

我是tkinter的新手,我正在尝试制作一个GUI,其中顶部有一个图像,该图像下方有4个按钮区域,这是一种选择答案的方法。然而,到目前为止我使用的代码我创建的按钮似乎只留在左上角,根本不会在图像下移动,是否有人知道解决方案呢?

import Tkinter as tk
from Tkinter import *
from Tkinter import PhotoImage

root = Tk()

class Class1(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()

        self.master = master        
        self.question1_UI()

    def question1_UI(self):

        self.master.title("GUI")        

        gif1 = PhotoImage(file = 'Image.gif')

        label1 = Label(image=gif1)
        label1.image = gif1 
        label1.grid(row=1, column = 0, columnspan = 2, sticky=NW)

        questionAButton = Button(self, text='Submit',font=('MS', 8,'bold'))
        questionAButton.grid(row = 2, column = 1, sticky = S)
        questionBButton = Button(self, text='Submit',font=('MS', 8,'bold'))
        questionBButton.grid(row = 2, column = 2, sticky = S)
        questionCButton = Button(self, text='Submit',font=('MS', 8,'bold'))
        questionCButton.grid(row = 3, column = 3, sticky = S)
        questionDButton = Button(self, text='Submit',font=('MS', 8,'bold'))
        questionDButton.grid(row = 3, column = 4, sticky = S)



def main():


    ex = Class1(root)
    root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),
    root.winfo_screenheight()))         
    root.mainloop()  


if __name__ == '__main__':
    main()  

1 个答案:

答案 0 :(得分:1)

您没有使用self作为label1的父级。此外,网格管理器从第0行开始:

def question1_UI(self):
    # ...
    label1 = Label(self, image=gif1)
    label1.image = gif1 
    label1.grid(row = 0, column = 0, columnspan = 2, sticky=NW)

    questionAButton = Button(self, text='Submit',font=('MS', 8,'bold'))
    questionAButton.grid(row = 1, column = 0, sticky = S)
    questionBButton = Button(self, text='Submit',font=('MS', 8,'bold'))
    questionBButton.grid(row = 1, column = 1, sticky = S)
    questionCButton = Button(self, text='Submit',font=('MS', 8,'bold'))
    questionCButton.grid(row = 2, column = 0, sticky = S)
    questionDButton = Button(self, text='Submit',font=('MS', 8,'bold'))
    questionDButton.grid(row = 2, column = 1, sticky = S)