Python tkinter yardım

Merhaba tkinter projemde bir entry öğesi var ancak bunu string’e dönüştürmek istediğimde combobox hatası alıyorum (Projenin farklı yerlerinde kulllanıyorum ve çalışıyor). Bir çok yol denedim ancak hiçbiri işe yaramadı. Kodum kısaca şu şekilde:

**
**
from tkinter import *
from tkinter.ttk import Combobox

motdyazi = Label(text="Motd: ")
motdyazi.place(x=5, y=50)

motd = Entry()
motd.place(x=5, y=80)

**

def set():
    global motd
    motd = str(motd.get())
    **
    a = "motd=" + motd

Aldığım hata ise şu:

        Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\yunus12320\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/yunus12320/Desktop//p1.py", line 278, in set
    "motd=" + motd)
TypeError: can only concatenate str (not "Combobox") to str

Yardımvı olursanız sevinirim şimdiden teşekkürler.

Merhaba,

  1. Ebeveyn widgetiniz (Tk()) eksik. Kodlarınızın diğer kısımlarını da muhtemelen paylaşmadınız.
  2. global alandaki, tipi Entry() olan motd değişkenini str tipinde bir veriye dönüştürmeye çalışıyorsunuz. Bunu neden yapıyorsunuz bilmiyorum. Fonksiyonu çalıştıran bir kodunuz da yok.

Tam olarak ne yapmak istiyorsunuz?

Merhaba öncelikle lütfen kusura bakmayın bazı sorunlardan dolayı uzun süre internete giremedim.
Tk() widgeti ve diğerlerini sorumla alakası olmadığı için buraya yazmadım. Ve ayrıca str tipine dönüştürdüğüm motd değişkenin daha ilerideki kodlarda bir dosyaya yazmakta kullanıyorum.

widget adlarını değişken ismi olarak kullanmayınız. Böyle yapmanız. size Entry deki veriyi döndürmez. İkisinden birinin adını değiştiriniz.
Eğer Entry içindeki veriyi kullanmak isterseniz, önce bu veriyi v=entry.get() gibi bir komutla alıp sonra bu değeri kullanınız.

Büyük ihtimalle o da bilmiyor, çünkü dönen değer zaten bir str.

Bu durumda kodunuzu çalıştıramayız ve bir çözüm bulduğumuzda bunun işe yarayıp yaramadığını göremeyiz. Soru sorarken çalışan bir kod vermeniz iyi olur.

Hata şuradaki ** içerisinde olan ve sizin atma ihtiyacı görmediğiniz kodda saklı büyük ihtimalle:

Aynı değisken ismini sürekli kullanmaktan kaçınmanız lazım. Bunun başlangıcı da anlamlı değişken isimleri kullanmak. Mesela bu hatayı çözseniz bile set fonksiyonunu ikinci çağırışınızda başka bir hata alacaksınız.

Bir de set diye bir fonksiyon tanımlanmamalı, builtin bir type kendisi.