Çözüldü Python kodundaki hata nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

AriceN

Hectopat
Katılım
16 Kasım 2020
Mesajlar
2.057
Çözümler
15
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
YAFL da öğrenci
Python:
from tkinter import *
import sqlite3.
import os.

# Main Program.
root = Tk()
root.title("Minerals and Vitamins")
width = 400.
height = 240.
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)

dosya = 'vt.sqlite'
dosya_mevcut = os.path.exists(dosya)

vt = sqlite3.connect(dosya)
im = vt.cursor()

mineral_datas = [("Calcium", 8.5, 10.4, "Wheat flour - 40 mg", "Corn flour - 9 mg", "Rice - 20 mg"),
 ("Sodium", 136, 145, "9 mg in Hot Red Pepper", "7 mg in Avocado", "4 mg in Quince"),
 ("Iron", 60, 170, "Pumpkin seeds - 10 mg", "Pistachios - 4 mg", "Moon core - 7 mg"),
 ("Magnesium", 2.0, 2.7, "Pumpkin seeds - 10 mg", "Pistachios - 4 mg", "Moon core - 7 mg"),
 ("Phosphorus", 2.7, 4.5, 'Dried apricots - 108 mg', 'Banana - 26 mg', 'Grapes - 20 mg')]

im.execute("""CREATE TABLE IF NOT EXISTS minerals.
(name TEXT, min_value REEL, max_value REEL, food_1 TEXT, food_2 TEXT, food_3 TEXT)""")

if not dosya_mevcut:
 for data in mineral_datas:
 im.execute("""INSERT INTO minerals VALUES(?, ?, ?, ?, ?, ?)""", data)
 vt.commit()

def getv(variable):
 variable = varList.get()
 return variable.

def buttonfunction(variable, entryvalue):
 last_value = int(entryvalue.get())
 if variable == "Calsium":
 im.execute("""SELECT * FROM minerals WHERE name = "Calcium" """)
 deger = im.fetchone()
 print(deger[1])
 if last_value < deger[1]:
 print("eksik")

# ==============================LABELS=========================================
hello_label = Label(root, text="Minerals and Vitamins", font=('MonoLisa', 15))
hello_label.pack(fill=X)

value_label = Label(root, text="Your Values: ", font=('MonoLisa', 15), bd=15)
value_label.place(x=15, y=60)

value_choose_label = Label(root, text="Your Chooses: ", font=('MonoLisa', 15), bd=15)
value_choose_label.place(x=15, y=110)

# ==============================ENTRY WIDGETS==================================
entryvalue = IntVar()
value_input = Entry(root, textvariable=entryvalue, font='MonoLisa')
value_input.place(x=165, y=78)

varList = StringVar(root)
varList.set("Please Choose")
choose_list = ["Calcium",
 "Sodium",
 "Iron",
 "Magnesium",
 "Phosphorus",
 "Potassium",
 "Zinc",
 "Copper",
 "Chromium",
 "Iodine",
 "Selenium",
 "Manganese",
 "Fluorine"]

choose_menu = OptionMenu(root, varList, *choose_list, command=getv)
choose_menu.place(x=165, y=122)

submit_button = Button(root, text="Submit", font=('Calibri', 10), command=buttonfunction)
submit_button.place(x=310, y=180)
# ==============================LOOP==================================
root.mainloop()

Hocalarım bir program yapmaya çalışıyorum. Burada entry ile aldığım veri ile optionmenude seçilen mineral alınacak ve veri tabanındaki değerler ile karşılaştırılacak ancak buton fonksiyonu tam olarak çalışmıyor.
Verdiği hata şu: Typeerror: buttonfunction() missing 2 required positional arguments: 'variable' and 'entryvalue'.
Değerleri fonksiyonun içine nasıl alacağımı çözemedim hatta şu var ki diğer fonksiyonda variable değişkenine atadığı değeri programa vermiyor. Ne kadar anlatabildim bilmiyorum ancak yardım edebilirseniz sevinirim.
 
Çözüm
Submit_button = button(root, text="submit", font=('calibri', 10), command= lambda: Action(variable, entryvalue))

hocam buttonfunction için parametreleri vermemişsin.
Şu kodu dener misin? Stack'dan de yazdım ama şu an ben deneyemiyorum. Çalışırsa bilgi verir misin?
Hocam şimdi sorum şu sen butona bastıgında (variable, entryvalue) değerlerini buttonfunctiona göndermek istiyorsun değil mi?

Evet istediğim şey oydu. Az önce kodda bir değişiklik yaptım ve çalıştı ancak optionmenü de seçilen türü bir türlü değişkene aktaramadım.
Python:
from tkinter import *
import sqlite3
import os

# Main Program
root = Tk()
root.title("Minerals and Vitamins")
width = 400
height = 240
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)

dosya = 'vt.sqlite'
dosya_mevcut = os.path.exists(dosya)

vt = sqlite3.connect(dosya)
im = vt.cursor()

mineral_datas = [("Calcium", 8.5, 10.4, "Wheat flour - 40 mg", "Corn flour - 9 mg", "Rice - 20 mg"),
                 ("Sodium", 136, 145, "9 mg in Hot Red Pepper", "7 mg in Avocado", "4 mg in Quince"),
                 ("Iron", 60, 170, "Pumpkin seeds - 10 mg", "Pistachios - 4 mg", "Moon core - 7 mg"),
                 ("Magnesium", 2.0, 2.7, "Pumpkin seeds - 10 mg", "Pistachios - 4 mg", "Moon core - 7 mg"),
                 ("Phosphorus", 2.7, 4.5, 'Dried apricots - 108 mg', 'Banana - 26 mg', 'Grapes - 20 mg')]

im.execute("""CREATE TABLE IF NOT EXISTS minerals
(name TEXT, min_value REEL, max_value REEL, food_1 TEXT, food_2 TEXT, food_3 TEXT)""")

if not dosya_mevcut:
    for data in mineral_datas:
        im.execute("""INSERT INTO minerals VALUES(?, ?, ?, ?, ?, ?)""", data)
    vt.commit()



def buttonfunction(variable, entryvalue):
    last_value = entryvalue.get()
    if variable == "Calsium":
        im.execute("""SELECT * FROM minerals WHERE name = "Calcium" """)
        deger = im.fetchone()
        print(deger)
        if last_value < deger[1]:
            print("Değer eksik")
        elif last_value > deger[2]:
            print("Değer Yüksek")
        else:
            print("Değer normal")


# ==============================LABELS=========================================
hello_label = Label(root, text="Minerals and Vitamins", font=('MonoLisa', 15))
hello_label.pack(fill=X)

value_label = Label(root, text="Your Values: ", font=('MonoLisa', 15), bd=15)
value_label.place(x=15, y=60)

value_choose_label = Label(root, text="Your Chooses: ", font=('MonoLisa', 15), bd=15)
value_choose_label.place(x=15, y=110)

# ==============================ENTRY WIDGETS==================================
entryvalue = StringVar(root)
value_input = Entry(root, textvariable=entryvalue, font='MonoLisa')
value_input.place(x=165, y=78)

varList = StringVar(root)
varList.set("Please Choose")
choose_list = ["Calcium",
               "Sodium",
               "Iron",
               "Magnesium",
               "Phosphorus",
               "Potassium",
               "Zinc",
               "Copper",
               "Chromium",
               "Iodine",
               "Selenium",
               "Manganese",
               "Fluorine"]

choose_menu = OptionMenu(root, varList, *choose_list)
choose_menu.place(x=165, y=122)
variable = varList.get()

submit_button = Button(root, text="Submit", font=("Calibri", 10), command= lambda: buttonfunction(variable, entryvalue))
submit_button.place(x=310, y=180)
# ==============================LOOP==================================
root.mainloop()
Hocam yardımlarınız için çok teşekkür ederim sonunda hatayı çözdüm ve programı çalıştırdım. Sağ olun gerçekten.
 
Son düzenleme:

Geri
Yukarı