Python之Tkinter问题请教。

查看 66|回复 6
作者:豆虫   
[Python] 纯文本查看 复制代码# -*- coding: UTF-8 -*- //字符编码
import tkinter as tk
import sqlite3
import random
import subprocess
dbname='F:\棋谱类\chess.db'
conn=sqlite3.connect(dbname)
cursor=conn.cursor()
def count():
    # 统计未练习数量
    cursor.execute("SELECT COUNT(*) FROM shuju WHERE lianxi
-----------图片显示-----------------------
[i]
----------------------问题描述---------------------------------
1,cuo=cursor.execute("UPDATE shuju SET cuowu = cuowu+1 WHERE id=?",(num))
     这句SQL代码没写对,报错。
这句代码的意思是执行一次,往shuju表中的cuowu字段的值累加1,默认值是0.
2,随机数问题:
如果加这个random.seed(shulian),如果加上这个,点击下一局和错误,得到的随机数是一样的,但再次点击,随机数不会变.
如果不加random.seed(shulian),两个按钮得到的随机数不相同。
3,要实现功能:
点击下一局,从数据表中随机取出一条数据,如果错误,点击错按钮,往数据表的cuowu字段值累加1,点击正确按钮,往数据表的lianxi字段值累加1(这个功能还没写到)
问题核心,什么让三个或四个按钮同时传入的随机数是同步的,谢谢各位大虾。麻烦花点时间帮忙解决一下。

随机数, 错误

豆虫
OP
  

或者说,指定一个数,如果它发生运行改变的话,什么在其他函数中去同步调用这个数。
像Tkinter的这个Button,定义的函数不用实例化就能使用,搞不懂。
Forgetten   

给个思路吧
1.先从chess.db读取条数
2.生成随机数作为当前条目的索引值,
3.根据2的索引值去数据库取该索引的数据,如果该索引不存在,则回到2
4.若正确或错误,根据索引修改对应的数据
5.点击下一步 回到2
豆虫
OP
  


Forgetten 发表于 2024-11-9 13:53
给个思路吧
1.先从chess.db读取条数
2.生成随机数作为当前条目的索引值,

这个代码就是实现你说的第二步
[Python] 纯文本查看 复制代码def count():
    # 统计未练习数量
    cursor.execute("SELECT COUNT(*) FROM shuju WHERE lianxi
Forgetten   

index_list = [0]
def shuji():
    # 生成一个随机数
    shulian=count()
    num = random.randint(1, shulian)  # 随机数
    index_list  [0] = num
在用 随机数的时候直接调用 num = index_list[0]就行,这样只要你不再次调用def shuji():函数,
每次获得的随机数都是同一个数
豆虫
OP
  


Forgetten 发表于 2024-11-9 14:11
index_list = [0]
def shuji():
    # 生成一个随机数

[Python] 纯文本查看 复制代码# -*- coding: UTF-8 -*- //字符编码
import tkinter as tk
import random
index_list = [0]
def shuji():
    # 生成一个随机数
    num = random.randint(1, 3610)  # 随机数
    global index_list
    index_list[0] = num
# 在用 随机数的时候直接调用 num = index_list[0]就行,这样只要你不再次调用def shuji():函数,
# 每次获得的随机数都是同一个数
shuji()
def cuowu():
    global index_list
    num=index_list[0]
    print("错误按钮随机数",num)
def play():
    global index_list
    num = index_list[0]
    print("开始按钮随机数", num)
def next():
    shuji()
    global index_list
    num = index_list[0]
    print("刷新按钮随机数", num)
打谱=tk.Tk()
打谱.title("象棋布局记忆辅助")
打谱.geometry('150x150-50+50')
tk.Button(打谱,text='开始',font=('黑体',15),width=8,command=play).place(x=10,y=30)
tk.Button(打谱,text='错误',font=('黑体',15),width=8,command=cuowu).place(x=10,y=65)
tk.Button(打谱,text='刷新',font=('黑体',15),width=8,command=next).place(x=10,y=100)
打谱.mainloop()
经测试,此代码可行,谢谢!!!
还有一个sqlite数据库更新字段的sql代码帮我看一下,写法是否有误,谢谢了
cuo=cursor.execute("UPDATE shuju SET cuowu = cuowu+1 WHERE id=?",(num))
豆虫
OP
  

[Python] 纯文本查看 复制代码Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "F:\象棋程序\网友解答测试.py", line 21, in cuowu
    cuo = cursor.execute("UPDATE shuju SET cuowu = cuowu+1 WHERE id=?", (num))
ValueError: parameters are of unsupported type
报错信息
您需要登录后才可以回帖 登录 | 立即注册

返回顶部