鱼C论坛

 找回密码
 立即注册
查看: 4852|回复: 29

[已解决]tk获取问题

[复制链接]
发表于 2022-10-6 15:21:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 元豪 于 2022-10-6 17:43 编辑

非要我再发一个帖子吗?

都说可以跟帖继续问,大佬一个个的都不回答...

问:

获取

  1. r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
  2. r1.place(x=20, y=40)
复制代码


中的value的值



最佳答案
2022-10-6 17:57:09
元豪 发表于 2022-10-6 17:33
r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)



对,value 的值可以通过 variable = v  这里设置的 v 进行获取

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-6 19:54:25 | 显示全部楼层
本帖最后由 元豪 于 2022-11-16 18:34 编辑
Twilight6 发表于 2022-10-6 19:53
绑定事件,都有自带 event 函数,否则会报错的

event 对象里面有一些触发事件的方法,能获取点击 ...


月V 滚得!(太棒了)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:53:07 | 显示全部楼层
元豪 发表于 2022-10-6 19:49
最后一个问题:
你的函数为什么又一个event参数?
最佳是你定了



绑定事件,都有自带 event 函数,否则会报错的

event 对象里面有一些触发事件的方法,能获取点击时的 x、y 坐标啦、获取此时触发事件的组件名啦等等

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 19:49:06 | 显示全部楼层
Twilight6 发表于 2022-10-6 19:45
这样可以吗?按住确定时候 quding 为 True 一松开就变成 False


最后一个问题:
你的函数为什么又一个event参数?
最佳是你定了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:45:53 | 显示全部楼层
元豪 发表于 2022-10-6 19:34
第12行的queding变量
谢谢啦


这样可以吗?按住确定时候 quding 为 True 一松开就变成 False

  1. # -*- coding: <utf-8> -*- #
  2. import random
  3. import tkinter as tk
  4. from tkinter import messagebox
  5. import time

  6. window = tk.Tk()
  7. window.title('勇士游戏')
  8. window.geometry('300x250')
  9. window.resizable(False, False)

  10. queding = False
  11. TianShu = 1
  12. GongJi = random.randint(25, 30)
  13. XueLiang = 100
  14. JiE = 100
  15. SuDu = 10
  16. FangYu = 10
  17. xinxi = '''
  18. 血量: {}

  19. 饥饿度: {}

  20. 速度: {}

  21. 防御: {}
  22. '''.format(XueLiang, JiE, SuDu, FangYu)

  23. v = tk.IntVar()


  24. def TuiChu():
  25.     tuichu = messagebox.askokcancel(title='退出', message='你确定要退出游戏吗?')
  26.     if tuichu:
  27.         window.quit()


  28. def ZhuCaiDan():
  29.     zhucaidan = messagebox.askokcancel(title='返回', message='你确定要返回主菜单吗?')
  30.     if zhucaidan:
  31.         pass


  32. def ChuFa():
  33.     pass


  34. def ZhuangBei():
  35.     pass


  36. def ChaKanZhuangBei():
  37.     pass


  38. def WuPin():
  39.     pass


  40. def ShiYong():
  41.     pass


  42. def YiTian():
  43.     pass


  44. def set_True(event):
  45.     global queding
  46.     queding = True


  47. def set_False(event):
  48.     global queding
  49.     queding = False


  50. l = tk.Label(window, text='今天是第 {} 天,你要:'.format(TianShu), font=1)
  51. l.place(x=80, y=5)

  52. XinXi = tk.Label(window, text=xinxi, bg='yellow', fg='black', font=15, width=15, height=8)
  53. XinXi.place(x=150, y=50)

  54. r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
  55. r1.place(x=20, y=40)
  56. r2 = tk.Radiobutton(window, text='2. 装备物品', variable=v, value=2, command=ZhuangBei)
  57. r2.place(x=20, y=65)
  58. r3 = tk.Radiobutton(window, text='3. 查看装备', variable=v, value=3, command=ChaKanZhuangBei)
  59. r3.place(x=20, y=90)
  60. r4 = tk.Radiobutton(window, text='4. 查看物品', variable=v, value=4, command=WuPin)
  61. r4.place(x=20, y=115)
  62. r5 = tk.Radiobutton(window, text='5. 吃东西', variable=v, value=5, command=ShiYong)
  63. r5.place(x=20, y=140)
  64. r6 = tk.Radiobutton(window, text='6. 过了这一天~', variable=v, value=6, command=YiTian)
  65. r6.place(x=20, y=165)

  66. B = tk.Button(window, text='确定', bg='gray', width=25, height=2)
  67. B.bind("<Button>", set_True)
  68. B.bind("<ButtonRelease>", set_False)
  69. B.place(x=55, y=195)
  70. m = tk.Menu(window)
  71. f = tk.Menu(m, tearoff=0)
  72. m.add_cascade(label='返回', menu=f)
  73. f.add_command(label='返回主菜单', command=ZhuCaiDan)

  74. window.config(menu=m)

  75. b = tk.Button(window, text='退出游戏', bg='black', fg='white', width=7, height=1, command=TuiChu)
  76. b.place(x=2, y=2)

  77. window.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 19:34:46 | 显示全部楼层
Twilight6 发表于 2022-10-6 19:30
你要设置什么 变量 在按下时候变成 True 松开 False?

第12行的queding变量
谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:30:15 | 显示全部楼层



你要设置什么 变量 在按下时候变成 True 松开 False?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 19:28:39 | 显示全部楼层
Twilight6 发表于 2022-10-6 19:27
emmm 我主要的部分代码都画出来啦,你直接就可以弄去用用

实在不行你把现在最新的代码发我试试看 ...
  1. # -*- coding: <utf-8> -*- #
  2. import random
  3. import tkinter as tk
  4. from tkinter import messagebox
  5. import time

  6. window = tk.Tk()
  7. window.title('勇士游戏')
  8. window.geometry('300x250')
  9. window.resizable(False, False)

  10. queding = False
  11. TianShu = 1
  12. GongJi = random.randint(25, 30)
  13. XueLiang = 100
  14. JiE = 100
  15. SuDu = 10
  16. FangYu = 10
  17. xinxi = '''
  18. 血量: {}

  19. 饥饿度: {}

  20. 速度: {}

  21. 防御: {}
  22. '''.format(XueLiang, JiE, SuDu, FangYu)

  23. v = tk.IntVar()

  24. def TuiChu():
  25.     tuichu = messagebox.askokcancel(title='退出', message='你确定要退出游戏吗?')
  26.     if tuichu:
  27.         window.quit()

  28. def ZhuCaiDan():
  29.     zhucaidan = messagebox.askokcancel(title='返回', message='你确定要返回主菜单吗?')
  30.     if zhucaidan:
  31.         pass

  32. def QueDing():
  33.     global queding
  34.     if queding == False:
  35.         queding = True
  36.         if v.get() == 1:
  37.             
  38.     else:
  39.         queding = False

  40. def ChuFa():
  41.     pass

  42. def ZhuangBei():
  43.     pass

  44. def ChaKanZhuangBei():
  45.     pass

  46. def WuPin():
  47.     pass

  48. def ShiYong():
  49.     pass

  50. def YiTian():
  51.     pass

  52. l = tk.Label(window, text='今天是第 {} 天,你要:'.format(TianShu), font=1)
  53. l.place(x=80, y=5)

  54. XinXi = tk.Label(window, text=xinxi, bg='yellow', fg='black', font=15, width=15, height=8)
  55. XinXi.place(x=150, y=50)

  56. r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
  57. r1.place(x=20, y=40)
  58. r2 = tk.Radiobutton(window, text='2. 装备物品', variable=v, value=2, command=ZhuangBei)
  59. r2.place(x=20, y=65)
  60. r3 = tk.Radiobutton(window, text='3. 查看装备', variable=v, value=3, command=ChaKanZhuangBei)
  61. r3.place(x=20, y=90)
  62. r4 = tk.Radiobutton(window, text='4. 查看物品', variable=v, value=4, command=WuPin)
  63. r4.place(x=20, y=115)
  64. r5 = tk.Radiobutton(window, text='5. 吃东西', variable=v, value=5, command=ShiYong)
  65. r5.place(x=20, y=140)
  66. r6 = tk.Radiobutton(window, text='6. 过了这一天~', variable=v, value=6, command=YiTian)
  67. r6.place(x=20, y=165)

  68. B = tk.Button(window, text='确定', bg='gray', width=25, height=2, command=QueDing)
  69. B.place(x=55, y=195)

  70. m = tk.Menu(window)
  71. f = tk.Menu(m, tearoff=0)
  72. m.add_cascade(label='返回', menu=f)
  73. f.add_command(label='返回主菜单', command=ZhuCaiDan)

  74. window.config(menu=m)

  75. b = tk.Button(window, text='退出游戏', bg='black', fg='white', width=7, height=1, command=TuiChu)
  76. b.place(x=2, y=2)

  77. window.mainloop()
复制代码


拿去拿去~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:27:22 | 显示全部楼层
元豪 发表于 2022-10-6 19:22
可是要怎样加到代码中呢?



emmm 我主要的部分代码都画出来啦,你直接就可以弄去用用

实在不行你把现在最新的代码发我试试看吧,我改改看

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 19:22:07 | 显示全部楼层

可是要怎样加到代码中呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:18:43 | 显示全部楼层



噗 好吧,哈哈

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 19:15:24 | 显示全部楼层
Twilight6 发表于 2022-10-6 19:10
看看这篇文章:https://fishc.com.cn/forum.php?mod=viewthread&tid=61373&extra=page%3D1%26filter% ...

我的钱...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 19:10:53 | 显示全部楼层
元豪 发表于 2022-10-6 18:57
敢问大佬,有没有办法让按钮按着的时候是True,松开时是False呢?



看看这篇文章:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D604

我也是现查现写的,你也可以去鱼C整理的 Tkinter 文档看看

可以这样实现,参考代码:

  1. from tkinter import *
  2. from time import sleep
  3. from threading import Thread

  4. root = Tk()
  5. flag = False





  6. button = Button(root, text="测试")
  7. button.pack()

  8. # ↓ 主要实现代码 --------------------------------
  9. def set_True(event):
  10.     global flag
  11.     flag = True


  12. def set_False(event):
  13.     global flag
  14.     flag = False

  15. button.bind("<Button>", set_True)
  16. button.bind("<ButtonRelease>", set_False)
  17. # ↑ 主要实现代码 --------------------------------

  18. # 多线程打印下实现效果,可以删除
  19. def print_flag():
  20.     while True:
  21.         sleep(1)
  22.         print(flag)


  23. Thread(target=print_flag).start()

  24. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 18:57:13 | 显示全部楼层
Twilight6 发表于 2022-10-6 18:30
哈哈 我测试了下没什么问题~

敢问大佬,有没有办法让按钮按着的时候是True,松开时是False呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 18:30:13 | 显示全部楼层
元豪 发表于 2022-10-6 18:29
哦,是我的问题



哈哈 我测试了下没什么问题~

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 18:29:03 | 显示全部楼层
元豪 发表于 2022-10-6 18:25
我把函数改了一下,效果有趣极了...

哦,是我的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 18:25:12 | 显示全部楼层
Twilight6 发表于 2022-10-6 18:21
没错呀,但是你的代码:
if QueDing == True:
    if v.get() == 1:

我把函数改了一下,效果有趣极了...

  1. def QueDing():
  2.     global queding
  3.     if queding == False:
  4.         queding = True
  5.         if v.get() == 1:
  6.             print("51616161616161616161616161616")
  7.     else:
  8.         queding = False
复制代码


现在,一开始,按钮会全部选上...


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 18:21:07 | 显示全部楼层
元豪 发表于 2022-10-6 18:07

’ 确定 ‘ 不就是一个Button吗?


没错呀,但是你的代码:
if QueDing == True:
    if v.get() == 1:
        print("haha")

而且你代码中的 get 函数不在 QueDing() 中进行调用嗷

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 18:07:48 | 显示全部楼层
Twilight6 发表于 2022-10-6 18:04
你要把内容放到函数中去,例如可以设置个 button,设置 commad 触发函数,就可以查看每次的打印,否 ...


’ 确定 ‘ 不就是一个Button吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 18:05:35 | 显示全部楼层
元豪 发表于 2022-10-6 18:00
算了让你看一下完整代码


你这个文字游戏看起来不错哟

可以参考参考这个代码:

  1. from tkinter import *

  2. master = Tk()

  3. v = StringVar()
  4. v.set(2)

  5. Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
  6. Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)
  7. Radiobutton(master, text="Three", variable=v, value=3).pack(anchor=W)


  8. def show():
  9.     print(v.get())


  10. button = Button(master, text="测试", command=show)
  11. button.pack()

  12. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-2 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表