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.)
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'>
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