Я хочу создать простое приложение для игры в кости (персональный проект, чтобы улучшить работу с python), в котором пользователь может выбрать, бросать 6 или 20 кубиков с помощью tkinter.
В основном должно быть 4 виджета:
метка (чтобы напечатать результат)
кнопка (для запуска функции прокрутки костей)
и 2 флажка (чтобы выбрать, какие кости бросить)
поэтому код, который я пробовал, выглядит следующим образом.
from tkinter import *
import tkinter as tk
import random
window = tk.Tk()
def roll():
if var1 == 1:
print("your result is " + str(random.randint(1,6)))
elif var2 == 1:
print("your result is " + str(random.randint(1,20)))
label = tk.Label(canvas, text = roll(), width = 20, font = 40,
height = 1)
label.place(relx=.5, rely = .2, anchor='n')
var1 = IntVar()
var2 = IntVar()
canvas = tk.Canvas(window, height = 600, width = 300, bg = 'blue').pack()
C1 = Checkbutton(canvas, text = "6", variable = var1.get(),
onvalue = 1, offvalue = 0, height=1,
width = 10)
C1.place(relx = .01, rely = .7)
C2 = Checkbutton(canvas, text = "20", variable = var2.get(),
onvalue = 1, offvalue = 0, height=1,
width = 10)
C2.place(relx = .5, rely = .7)
btn = tk.Button(canvas, text = 'roll dem bones!', command = lambda:
roll())
btn.place(relx = .5, rely = .9)
window.mainloop()
Пока у меня две проблемы.
1: когда я нажимаю кнопку CheckButton, в обоих случаях появляется галочка, означающая, что оба активируются (возможно, это можно исправить, просто поправившись с помощью tkinter, но если вы заметите проблему, я буду признателен за совет.
2: при нажатии на кнопку появляется ошибка «RecursionError: превышена максимальная глубина рекурсии в сравнении».
Я думаю, проблема в том, что я просто не могу разобраться с вызовом функций таким способом с помощью tkinter. Я на самом деле использую это как упражнение для создания более сложного приложения RPG для использования с некоторыми друзьями, где вы выбираете бонус атрибута, чтобы добавить к броску D20, но я хотел попробовать что-то более простое без остальной части приложение в коде.
Сообщество питонов до сих пор было самым полезным и наименее пренебрежительным из всех групп кодирования, к которым я обращался за помощью, поэтому заранее благодарю за помощь.
Кев.