用python/tkinter制作幻灯片

用python/tkinter制作幻灯片,python,user-interface,tkinter,Python,User Interface,Tkinter,这是我的第一篇文章,我仍然是python领域的新手。我试图用python/tkinter制作GUI应用程序,但遇到了一些麻烦。我有两个文件夹的图像,我需要显示一个带有一些文本的页面,然后显示文件夹a中的图像,然后显示带有文本的同一页面,然后显示文件夹B中的图像。我可以显示这些图像,但我的问题是保持所有内容都居中且外观良好。如果我调整图像的大小小于父帧,则边缘周围有空白。由于小部件的大小,在带有文本的页面边缘有极端的空白 以下是我遇到的问题列表: 小部件边缘的空格小于父框架 小部件不在页面中间居

这是我的第一篇文章,我仍然是python领域的新手。我试图用python/tkinter制作GUI应用程序,但遇到了一些麻烦。我有两个文件夹的图像,我需要显示一个带有一些文本的页面,然后显示文件夹a中的图像,然后显示带有文本的同一页面,然后显示文件夹B中的图像。我可以显示这些图像,但我的问题是保持所有内容都居中且外观良好。如果我调整图像的大小小于父帧,则边缘周围有空白。由于小部件的大小,在带有文本的页面边缘有极端的空白

以下是我遇到的问题列表:

  • 小部件边缘的空格小于父框架
  • 小部件不在页面中间居中
下面是我为这些问题的框架编写的代码。我知道这不是最干净的,但如果可能的话,我真的非常感谢你的帮助

class TrialPage(tk.Frame):
def __init__(self, parent,controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    self.parent = parent
    self.configure(bg='#5B9BD5')
    self.stimFrames = []
    self.evalList = []

    #initialize object to retrieve image paths
    self.trialData = TrialData()

    self.trialStim = [self.trialData.Trial_Stimuli_1,
                        self.trialData.Trial_Stimuli_2,
                        self.trialData.Trial_Stimuli_3,
                        self.trialData.Trial_Stimuli_4,
                        self.trialData.Trial_Stimuli_5,
                        self.trialData.Trial_Stimuli_6,
                        self.trialData.Trial_Stimuli_7,
                        self.trialData.Trial_Stimuli_8,
                        self.trialData.Trial_Stimuli_9,
                        self.trialData.Trial_Stimuli_10,
                        self.trialData.Trial_Stimuli_11]

    self.trialControl = [self.trialData.Trial_Control_1,
                        self.trialData.Trial_Control_2,
                        self.trialData.Trial_Control_3,
                        self.trialData.Trial_Control_4,
                        self.trialData.Trial_Control_5,
                        self.trialData.Trial_Control_6,
                        self.trialData.Trial_Control_7,
                        self.trialData.Trial_Control_8,
                        self.trialData.Trial_Control_9,
                        self.trialData.Trial_Control_10,
                        self.trialData.Trial_Control_11]

    self.picture_display = tk.Label(self, bg="#5B9BD5")
    self.picture_display.grid(row=1,column=1,sticky="nsew")

    #Get size of screen
    self.imageWidth = int(parent.winfo_width())
    self.imageHeight = int(parent.winfo_height())
    #cycle through images. resize was attempted but not implemented
    self.pictures = cycle((imageTk.PhotoImage(image.open(imagePath).resize((int(self.imageWidth),int(self.imageHeight)),image.ANTIALIAS)))for imagePath in self.trialStim)

    '''Center the image display on the frame DOESN'T WORK'''
    self.grid_rowconfigure(0,weight=1)
    self.grid_rowconfigure(2,weight=1)
    self.grid_columnconfigure(0,weight=1)
    self.grid_columnconfigure(2,weight=1)

    self.show_break()

def show_slides(self):
    #cycle through the images and show them
    img_object = next(self.pictures)
    #display image
    self.picture_display.config(image=img_object)
    #wait 2 seconds and display break page
    self.after(2000, self.show_break)

def show_break(self):
    #hide image
    self.picture_display.config(image='')
    #display text
    self.picture_display.config(fg="#FFFFFF",bg='#5B9BD5',font=('Arial',18),text="Please relax and take a break. The next slide will begin shortly.")
    #wait 2 seconds and display break page
    self.after(2000, self.show_slides)

缩进在你的代码中被破坏了。那么你到底想要实现什么呢?您想让文本A和图片A显示>文本A和图片B显示>文本B和图片C显示>文本B和图片C显示……?行配置/列配置不用于“居中”和图像。它们只是告诉框架/窗口在窗口调整大小时自动增加或缩小网格行/列缩进在代码中被破坏。那么,您到底想要实现什么呢?您想让文本A和图片A显示>文本A和图片B显示>文本B和图片C显示>文本B和图片C显示……?行配置/列配置不用于“居中”和图像。它们只是告诉框架/窗口在调整窗口大小时自动增长或收缩网格行/列