Необходимо расширить строку № 3 и столбец № 0, но не нужно расширять строку № 1 и столбец № - PullRequest
0 голосов
/ 13 июня 2019

Я использую геометрию сетки, и мне нужно расширить только холст при максимизации окна.Холст находится на рамке, которая находится в строке № 3 и столбце № 0.Когда я делаю master.grid_rowconfigure (3, weight = 1) self.canvasFrame.grid_rowconfigure (0, weight = 1), тогда холст расширяется в строке, но мне также нужно развернуть его в столбце.поэтому я сделал master.grid_columnconfigure (0, weight = 1) self.canvasFrame.grid_columnconfigure (0, weight = 1)

, но он также расширил столбец № 0 строки # 1.Я не хочу этого.

Вот мой код.

Можно ли добиться с помощью диспетчера геометрии сетки?

from tkinter import *
from tkinter import ttk
from tkinter import messagebox

class MainUI:
    def __init__(self,master):
        self.master = master

        # row 1
        ttk.Label(self.master, text="Customer").grid(row=0, column=0, sticky=W, pady = 5, padx = 15)
        ttk.Label(self.master, text="Items").grid(row=0,column=1, sticky=W, pady = 5, padx = 15)
        ttk.Label(self.master, text="Price").grid(row=0,column=2, sticky=W, pady = 5, padx = 15)
        ttk.Label(self.master, text="Cost").grid(row=0,column=3, sticky=W, pady = 5, padx = 15)

        # row 2
        self.customerCombo = ttk.Combobox( self.master, 
                                            values=[])
        self.customerCombo.grid(row=1,column=0, sticky=W, pady = 5, padx = 15)

        self.jobCombo = ttk.Combobox( self.master, 
                                            values=[])
        self.jobCombo.grid(row=1,column=1, sticky=W, pady = 5, padx = 15)

        self.estLaborEntry = ttk.Entry(self.master).grid(row=1,column=2, sticky=W, pady = 5, padx = 15)
        self.estMaterialEntry = ttk.Entry(self.master).grid(row=1,column=3, sticky=W, pady = 5, padx = 15)

        # row 3
        self.addRowButton = ttk.Button(self.master, command=self.show, text="Add Row").grid(row=2, column = 2, sticky=W, pady = 5, padx = 15)
        self.addRowButton = ttk.Button(self.master, command=self.show, text="Add Col").grid(row=2, column = 3, sticky=W, pady = 5, padx = 15)

        #row 4
        self.canvasFrame = Frame(master)


        self.canvasFrame.grid(row=3, column=0, columnspan=3, sticky=W+E+N+S, pady=5, padx=15)
        master.grid_rowconfigure(3,weight=1)
        master.grid_columnconfigure(0,weight=1)
        xscrollbar = Scrollbar(self.canvasFrame, orient=HORIZONTAL)
        xscrollbar.grid(row=1, column=0, sticky=E+W)

        yscrollbar = Scrollbar(self.canvasFrame)
        yscrollbar.grid(row=0, column=1, sticky=N+S)

        canvas = Canvas(self.canvasFrame, bd=0, 
                        scrollregion=(0, 0, 1000, 1000),
                        xscrollcommand=xscrollbar.set,
                        yscrollcommand=yscrollbar.set)
        canvas.grid(row=0, column=0, sticky=N+S+E+W)
        self.canvasFrame.grid_rowconfigure(0,weight=1)
        self.canvasFrame.grid_columnconfigure(0,weight=1)
    def show(self):
        messagebox.showinfo("title", "message")
def on_closing():
    root.destroy()
#     from tkinter import messagebox
#     if messagebox.askokcancel("Quit", "Do you want to quit?"):
#         root.destroy()


root = Tk()   
mainui = MainUI(root)
root.title("Test")
root.protocol("WM_DELETE_WINDOW", on_closing)
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...