调整窗口和内容的大小

2024-04-19 10:05:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pythontkinter构建一个包含matplotlib图形和一些按钮的ui,但是在调整窗口及其内容时遇到了困难。我已经看过这个网站上的一些例子和文档,据我所知,对于一个包含更小框架的框架来说,它们都需要单独配置。每个应用程序都会对其应用一个权重,以定义它接收到多少可用空间(这是正确的吗?)。但是,当我尝试应用如下所示的这一点时,没有一个帧调整大小。 另外,如果列配置的wiegth为零,row configure的wiegth为1,这是否意味着它只会在一个方向上调整大小?在

import Tkinter
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
class Application():
    def __init__(self, master):


        frame2 = Tkinter.Frame(master, height=510, width=770, bg='red')
        frame2.grid(row=0, column=0, sticky='nsew')
        frame2.columnconfigure(0, weight=1)
        frame2.rowconfigure(0, weight=1)

        frame2a = Tkinter.Frame(frame2, height=80, width=770, bg='blue') 
        frame2a.grid(row=0, column=0, sticky='nsew')
        frame2a.columnconfigure(0, weight=1)
        frame2a.rowconfigure(0, weight=1)        

        frame2b = Tkinter.Frame(frame2, height=410, width=770, bg='green') 
        frame2b.grid(row=1, column= 0, sticky='nsew')
        frame2b.columnconfigure(0, weight=1)
        frame2b.rowconfigure(1, weight=1)    

        # add plot
        fig = Figure(figsize=(9.5,5.2), facecolor='white')
        fig.add_subplot(111)        
        canvas = FigureCanvasTkAgg(fig, master=frame2b)

        canvas.show()
        canvas.get_tk_widget().pack(side='top', fill='both', expand=1)

if __name__ == '__main__' :

    root = Tkinter.Tk()
    root.geometry("770x510")
    app = Application(root)
    root.mainloop()

Tags: importmastermatplotlibtkinterrootwidthframegrid
1条回答
网友
1楼 · 发布于 2024-04-19 10:05:17

您使用columnconfigurerowconfigure的方法是正确的,但是您忘记了一件事:您没有在窗口中使用这些方法。所以,你基本上想这样做:

def __init__(self, master):
    master.columnconfigure(0, weight=1)
    master.rowconfigure(0, weight=1)

回答你的另一个问题(如果列配置的wiegth为零,row configure的wiegth为1,这是否意味着它只会在一个方向上调整大小?):是的,你是对的,那么widget/window只会向一个方向扩展,或者没有。在

另外,由于您使用grid来动态调整大小,height和{}参数已经过时。在

相关问题 更多 >