Как я могу управлять оператором if с логическими значениями? - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь создать симулятор бога в python, вроде Prayr, но у меня проблемы с сохранением, которое я хотел бы сделать первым. Каждый раз, когда я пытаюсь управлять своим оператором if с помощью логических значений, появляется сообщение о том, что TypeError: 'bool' object is not callable. Как я могу это исправить?

Вот мой код:

from tkinter import *
import os
from os import path
import random
from tkinter import simpledialog

filename = 0
followers = 0
loadedgame = False

def on_closing():
   if loadedgame == False():
        os.remove(filename)
        f = open(filename, "w+")
        f.write(str(followers))
        root2.destroy()
   else:
       f = open(filename, "w+")
       f.write(str(followers))
       root2.destroy()

def play():
    root2 = Tk()
    root.withdraw()
    root2.geometry("600x400")
    root2.title("God Sim")
    Label(root2, text="Followers:").pack()
    loadedgame = False

    root2.protocol("WM_DELETE_WINDOW", on_closing)

root = Tk()
root.title("God Sim")
root.geometry("600x400")

Label(root, text="God Sim").pack()
Button(root, text="New", command=play).pack()

# simpledialog.askstring("Input", "")

# filenumber = random.randint(1, 9999999999)
#   filename = str(filenumber) + ".txt"


Комментарии - это то, что я собираюсь добавить в код, как только эта проблема будет исправлена. Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Объект bool False не является функцией и, следовательно, не вызывается. Это сделано как if loadedgame == False:. Кроме того, используйте loadedgame is False только тогда, когда ваш тип loadedgame является bool. is не работает, если int или любой другой тип сравнивается с bool.

1 голос
/ 31 января 2020

Вы должны проверить условия с логическими значениями, используя is. Кроме того, это, вероятно, является честной ошибкой, но вы поставили скобки вызова метода после False, поскольку это не метод, а значение, которое нельзя вызвать. Вот как вы должны изменить свой код

from tkinter import *
import os
from os import path
import random
from tkinter import simpledialog

filename = 0
followers = 0
loadedgame = False

def on_closing():
   if not loadedgame:
        os.remove(filename)
        f = open(filename, "w+")
        f.write(str(followers))
        root2.destroy()
   else:
       f = open(filename, "w+")
       f.write(str(followers))
       root2.destroy()

def play():
    root2 = Tk()
    root.withdraw()
    root2.geometry("600x400")
    root2.title("God Sim")
    Label(root2, text="Followers:").pack()
    loadedgame = False

    root2.protocol("WM_DELETE_WINDOW", on_closing)

root = Tk()
root.title("God Sim")
root.geometry("600x400")

Label(root, text="God Sim").pack()
Button(root, text="New", command=play).pack()

# simpledialog.askstring("Input", "")

# filenumber = random.randint(1, 9999999999)
#   filename = str(filenumber) + ".txt"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...