Merhabalar, Tkinter ile yazdığım ufak bir bir arayüzüm var. Entry ve butonlardan değerleri alıp arkaplanda SOAP WebService ile veri aktarmak istiyorum. Zeep modülü ile Python Console üzerindeki denemelerimde veriyi aktarmayı başardım ancak dosya üzerinde bazı sıkıntılar yaşıyorum.
Öncelikle, arayüzden buton veya entry üzerindeki değeri alıyorum burda bir sıkıntı yok. Ancak işlemeye çalıştığımda (farklı bir dosya üzerinden işlemeye ve geri döndürmeye çalışıyorum) Python Console üzerinden doğru çalışan fonksiyon dosya üzerinden None döndürüyor
dosya üzerinden, şöyle gönderiyorum
urun_karti.Kategoriler = kategoriIDS.int.append(
get_category_id(kwargs['category'])
)
Burada amacım get_category_id üzerinden verdiğim değerin ID numarasını almak ve servisin metoduna eklemek
Fonksiyon ise şu şekilde; ayrıca başka bir dosyada kayıtlı ancak fonksiyonu düzgün şekilde çağırdığından import konusunda problem olduğunu sanmıyorum
def get_category_id(category, categories=categories):
for key, value in categories.items():
if (key == category):
return value['ID']
elif ('AltKategori' in value):
get_category_id(category, value['AltKategori'])
bu fonksiyonla aynı dosyada bulununan ve kategorileri yüklememi sağlayan fonksiyon şu;
def load_categories():
with open("assets/categories.json", encoding = "utf-8") as file:
data = file.read()
return json.loads(data)
categories = load_categories()
kategorilerin olduğu json dosyası çok uzun ama biraz kısaltıp eklersem;
{
"Ön Siparişteki Yayınlar": {
"ID": 7
},
"Hukuk Kitapları": {
"ID": 2,
"AltKategori": {
"Anayasa Hukuku": {
"ID": 9,
"AltKategori": {
"AİHM": {
"ID": 32
},
"Bireysel Başvuru": {
"ID": 33
},
"Devlet ve Hükümet Sistemleri": {
"ID": 34
},
"İnsan Hakları": {
"ID": 35
},
"Siyasi Partiler ve Seçim": {
"ID": 36
},
"Temel Hak ve Özgürlükler": {
"ID": 37
}
}
}
}
}
}
Sorun şurda oluşuyor. Örn. butondan ‘Hukuk Kitapları’ gelmiş olsun, o zaman bu değerin ID olan 2’yi düzgün şekilde döndürüyor. ‘AİHM’ gelmiş olsun, o zaman “None” döndürüyor ama Python Console üzerinden çalıştırsam düzgün şekilde çalışıyor ve 32 değerini döndürüyor.
Ayrıca == yerine “is” ile de denedim sonuş alamadım. type ile türlerini kontrol ettim hem “key” hem gönderdiğim değer “str” yani tür uyuşmazlığı da yok
Not: iç içe sözlük kullanmamın sebebi arayüzde iç içe menüler oluşturmak