Невозможно изменить высоту кнопки в tkinter python

#python #tkinter #tk #tkinter-scale

#python #tkinter #tk-toolkit #tkinter-масштаб

Вопрос:

 import tkinter
from tkinter import *

root = Tk()
root.title("Demo")

class Application(Frame):
    
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.grid(sticky="ewns")
        self.feet = StringVar()
        self.meters = StringVar()
        self.create_widgets()
        
    def calculate(self):
        try:
            self.meters.set(int(0.3048 * 10000.0   0.5)/10000.0)
        except ValueError:
            pass
        
    def create_widgets(self):
        self.master.resizable(width=TRUE, height=TRUE)
        top=self.winfo_toplevel()              
        top.rowconfigure(0, weight=1)       
        top.columnconfigure(0, weight=1)
        
        b1=Button(self, text="7", command=self.calculate,bg="lime")
        b1.grid(column=1, row=4, columnspan=1, rowspan=1, padx=0, pady=0, ipadx=0, ipady=0, sticky='we')
        
        ''' configuring adjustability of column'''
        self.columnconfigure(1, minsize=10, pad=0,weight=1)

        ''' configuring adjustability of rows'''
        self.rowconfigure(4, minsize=10, pad=0,weight=1)

app = Application(master=root)
app.mainloop()on(master=root)
app.mainloop()
  

Вот результат

перед изменением размера [то же, что появляется после компиляции]

перед изменением размера [то же, что появляется после компиляции]

после изменения размера

после изменения размера

Как вы можете видеть, я могу изменять ширину, но не высоту. Почему так???

Комментарии:

1. как насчет sticky='news' того, чтобы сделать липким со всех сторон.

Ответ №1:

Вы должны использовать sticky='news' , чтобы сделать ее липкой со всех сторон — сверху (справа), справа (справа), слева (слева), снизу (слева).


Почти тот же код с несколькими комментариями

 import tkinter as tk  # popular method to make it shorter
#from tkinter import * # PEP8: `import *` is not preferred

# --- classes ---

class Application(tk.Frame):
    
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.grid(sticky="ewns")
        self.feet = tk.StringVar()
        self.meters = tk.StringVar()
        self.create_widgets()
        
    def calculate(self):
        try:
            self.meters.set(int(0.3048 * 10000.0   0.5)/10000.0)
        except ValueError:
            print("value error")  # it is good to see problems
        
    def create_widgets(self):
        self.master.resizable(width=True, height=True)
        top=self.winfo_toplevel()              
        top.rowconfigure(0, weight=1)       
        top.columnconfigure(0, weight=1)
        
        b1 = tk.Button(self, text="7", command=self.calculate, bg="lime")
        b1.grid(column=1, row=4, columnspan=1, rowspan=1, padx=0, pady=0, ipadx=0, ipady=0, sticky='news')  # <-- `news`
        
        # configuring adjustability of column
        self.columnconfigure(1, minsize=10, pad=0,weight=1)

        # configuring adjustability of rows
        self.rowconfigure(4, minsize=10, pad=0,weight=1)

# --- main ---

root = tk.Tk()
root.title("Demo")
app = Application(root)
app.mainloop()
  

PEP 8 — Руководство по стилю для кода Python