Python 更改帧时Tkinter中的额外空间
我正在尝试为python制作GUI,其中框架在单击按钮时可以替换,我尝试了遵循许多教程来完成它,但我可以做到,所以在这里和那里混合了一些东西之后,我尝试了一些东西,似乎可以工作,但每当框架更改时,底部会添加额外的空间,我什么都试过了,但都做不成 这是我的密码:Python 更改帧时Tkinter中的额外空间,python,tkinter,Python,Tkinter,我正在尝试为python制作GUI,其中框架在单击按钮时可以替换,我尝试了遵循许多教程来完成它,但我可以做到,所以在这里和那里混合了一些东西之后,我尝试了一些东西,似乎可以工作,但每当框架更改时,底部会添加额外的空间,我什么都试过了,但都做不成 这是我的密码: from tkinter import * import tkinter as tk class Application(Frame): def __init__(self, master=None): Fram
from tkinter import *
import tkinter as tk
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.master.title("Main Window")
for r in range(6):
self.master.rowconfigure(r, weight=1)
for c in range(5):
self.master.columnconfigure(c, weight=1)
Button(master, text="Button {0}".format(c)).grid(row=6,column=c,sticky=E+W)
Frame1 = Frame(master, bg="#000000")
Frame1.grid(row = 0, column = 0, rowspan = 10, columnspan = 1, sticky = W+E+N+S)
Button(Frame1, text='Email \n Checker', bg='#FFFFFF', font=('arial', 22, 'normal'), command=btnClickFunction).place(x=10, y=55)
Button(Frame1, text='Auto Email\nSender', bg='#FFFFFF', font=('arial', 20, 'normal'), command=btnClickFunction).place(x=10, y=215)
Button(Frame1, text='Auto DM\n Sender', bg='#FFFFFF', font=('arial', 22, 'normal'),
command=lambda: self.switch_frame(StartPage)).place(x=17, y=366)
Frame3 = Frame(master, bg="green")
Frame3.grid(row = 0, column = 1, rowspan = 60, columnspan = 30, sticky = W+E+N+S)
def switch_frame(self, frame_class):
new_frame = frame_class()
new_frame.tkraise()
def btnClickFunction():
print('clicked')
class StartPage(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
# self.master.title("Main Window")
Frame1 = Frame(master, bg="#000000")
Frame1.grid(row = 0, column = 0, rowspan = 10, columnspan = 1, sticky = W+E+N+S)
Button(root, text='Email', bg='#FFFFFF', font=('arial', 22, 'normal'), command=btnClickFunction).place(x=10, y=55)
Button(Frame1, text='Auto Email\nSender', bg='#FFFFFF', font=('arial', 20, 'normal'), command=btnClickFunction).place(x=10, y=215)
Button(root, text='Auto DM\n Sender', bg='#FFFFFF', font=('arial', 22, 'normal'),
command=lambda: self.switch_frame(Application)).place(x=17, y=366)
Frame3 = Frame(master, bg="green")
Frame3.grid(row = 0, column = 1, rowspan = 60, columnspan = 30, sticky = W+E+N+S)
# Frame3.grid_rowconfigure(1, weight=1, uniform="x")
def switch_frame(self, frame_class):
new_frame = frame_class()
# frame = new_frame
new_frame.tkraise()
root = Tk()
root.geometry("871x560")
app = Application(master=root)
app.mainloop()
每当我单击“自动DM发件人”时,它会将按钮“电子邮件检查器”更改为“电子邮件”,但会在窗口底部添加空格
我真正想做的是当我点击任何一个按钮时,绿色部分的内容应该分别改变。我可以开发绿色部分中要显示的内容,但我无法开发如何在单击按钮时更改绿色部分,如果有人可以帮助演示单击按钮如何更改绿色部分,这将非常有用。谢谢。我们从头开始怎么样?有很多错误和混乱。重新开始会更容易。你需要定制我的例子来适应你的应用程序,但是它为你提供了一个建立的工作基础。 最大问题清单:
from tkinter import *
class Application(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
#use this as the master for your buttons
sidebar = Frame(self, bg="#0000FF")
sidebar.grid(row=0, column=0, sticky="nswe")
#button example
btn = Button(sidebar, text='switch', font=('arial', 20, 'normal'), command=self.switch)
btn.place(x=10, y=55)
#use this frame as the master for main content
self.main1 = Frame(self, bg="#00FF00")
self.main1.grid(row=0, column=1, sticky="nswe")
#use this frame as master for alternate content
#note that this is "waiting" to be added to the grid
self.main2 = Frame(self, bg="#FF0000")
#config layout ~ notice this is AFTER everything has been added to the grid
#also note that the first argument is the element to configure, not a number
self.grid_columnconfigure(sidebar, weight=1)
self.grid_rowconfigure(sidebar, weight=1)
self.grid_columnconfigure(self.main1, weight=6)
self.grid_rowconfigure(self.main1, weight=1)
#frames to toggle between
self.frames = [self.main1, self.main2]
#this is just an example of removing and adding element to/from the grid
#you will need to change this to suit your needs by applying ...
#grid_remove() to the current main frame and grid() to the new main frame
def switch(self, **kwargs):
self.frames[0].grid_remove()
self.frames.append(self.frames.pop(0)) #cheating and dirty rotation
self.frames[0].grid(row=0, column=1, sticky="nswe")
if __name__ == "__main__":
app = Application()
app.geometry("871x560")
app.title('Frame Switch Example')
app.mainloop()