Tkinterda Scale ile font büyütmede sorun yaşıyorum?

pencere = Tk()

def değiştir(val):
    etiket.configure(font="Verdana" + val)


değer = StringVar()
s = Scale(from_=2, to=20, orient="horizontal", showvalue=0,command=değiştir)
s.place(x=0, y=0)

etiket = Label(text="Etiket").place(x=20, y=100)
mainloop()```
Hata alıyorum yardım edebilir misiniz?
from tkinter import *

root = Tk()

def change_font():

    changeable_label.configure(font=('Arial',i.get()))

changeable_label = Label(root, text = 'Text Size' ,

    font = ('Arial' , 25), fg = 'black', width = 11, height = 2, 

       borderwidth = 1, relief = 'solid')

changeable_label.pack()

i = IntVar()

i.set(25)

button1 = Radiobutton(root,text = 'Increase font', variable=i, value=30, command=change_font)

button1.pack()

button2 = Radiobutton(root,text = 'Decrease font', variable=i, value=25, command=change_font)

button2.pack()

root.mainloop()```
import tkinter.font as tkFont

class Example(object):
    def __init__(self):
        root = tk.Tk()
        self.font = tkFont.Font(family="helvetica", size=18)
        text = tk.Text(root, width=1, height=1, font=self.font)
        button = tk.Button(root, text="Bigger", command=self.bigger)

        button.pack(side="top")
        text.pack(side="top", fill="both", expand=True)

        text.insert("end", "Hello, world!")

        # force the widow to a specific size after it's created
        # so that it won't change size when we change the font
        root.geometry("800x400")

    def start(self):
        tk.mainloop()

    def bigger(self):
        size = int(self.font.cget("size"))
        size += 2
        self.font.configure(size=size)


app = Example()
app.start()

Peki benim kodlarımın ne hatası var da çalışmıyor

etiket.configure(font="Verdana" + val)

şeklinde değil de,

etiket.configure(font=("Verdana", val))

şeklinde olmalı. Çünkü; font 3 argümanlı bir demet alıyor 0. index yazı tipi adı, 1. index boyutu, 2. index ise stili (kalın, italik vs.)

1 Beğeni

Dediğiniz şekilde yaptım fakat şu hatayı alıyorum bu seferde
AttributeError: 'NoneType' object has no attribute 'configure'

Bu tarz bir kullanım senin etiket objesi üzerindeki Label methodlarını kullanmanı engeller.

etiket = Label(text="Etiket").place(x=20, y=100)
print(type(etiket))
# <class 'NoneType'>

Bu şekilde Label classını kullanarak bir etiket adında bir obje oluşturup o obje üzerinde class methodlarını kullanmak saha sağlıklı olacaktır.

etiket = Label(text="Etiket")
etiket.place(x=20, y=100)
print(type(etiket))
# <class 'tkinter.Label'>
1 Beğeni

etiket = Label(text="Etiket").place(x=20, y=100) ile

etiket = Label(text=“Etiket”)
etiket.place(x=20, y=100)
aynı şey değiller mi?

Kesinlikle hayır. Bunu sormak yerine etkileşimli kabukta kendiniz de deneyebilirdiniz:

>>> from tkinter import *
>>> tk = Tk()
>>> label = Label(text="Etiket").place(x=20, y=100)
>>> print(label)
None
>>> label =  Label(text="Etiket")
>>> print(type(label))
<class 'tkinter.Label'>

Gördüğünüz gibi label = Label(text="Etiket").place(x=20, y=100) yaptığımızda label değişkenimiz None oluyor. Neden? Çünkü biz label değişkenine Label(text="Etiket").place(x=20, y=100) değerini atıyoruz, Label(text="Etiket") değerini değil. Label(text="Etiket") bir tkinter.Label nesnesi döndürürken Label(text="Etiket").place(x=20, y=100) işlemi None döndürüyor. Çünkü Label(text="Etiket").place(x=20, y=100) bir fonksiyon çağrısıdır, ve bu fonksiyon hiçbir şey döndürmüyor, yani None döndürüyor.

Etkileşimli kabukta kendim yapsaydım bu yorumu yapamayacaktım. yorumunuz anlamamı sağladı.
Teşekkür ederim :+1: :grinning:

1 Beğeni