鱼C论坛

 找回密码
 立即注册
查看: 2952|回复: 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 进行获取

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 15:51:47 | 显示全部楼层
这里面没有定义 value 变量吧......
能不能把代码发全?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 16:24:36 | 显示全部楼层

跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见

不是不回复你,一个很简单的问题没必要故意不回复你还叫你继续发帖子

确实是我真的没看见你回复我(可能是被我不小心刷新了消息提醒,然后刚刚午休了一会,直到你现在发新帖子我才回去看了下之前的帖子,抱歉抱歉):

你设置的 v 是 IntVar 对象可以直接使用 .get() 进行获取,例如你这里 多选 的 value 值,可以表示为 v.get()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 16:26:20 | 显示全部楼层
Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见

不是不回复你,一个很简单的问题没必要故意不回 ...



StringVar 值对象也同样可以 .get() 获取 ,.set() 设置

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 17:33:44 | 显示全部楼层
python爱好者. 发表于 2022-10-6 15:51
这里面没有定义 value 变量吧......
能不能把代码发全?

r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 17:35:15 | 显示全部楼层
Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见

不是不回复你,一个很简单的问题没必要故意不回 ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 17:37:15 | 显示全部楼层
Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见

不是不回复你,一个很简单的问题没必要故意不回 ...

没关系啊,抱怨一下而已,别介意啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 进行获取

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-6 17:59:35 | 显示全部楼层
元豪 发表于 2022-10-6 17:37
没关系啊,抱怨一下而已,别介意啊



没事,你没错,确实是我忘回复了,你别介意就行

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-6 18:00:06 | 显示全部楼层
Twilight6 发表于 2022-10-6 17:57
对,value 的值可以通过 variable = v  这里设置的 v 进行获取

算了让你看一下完整代码
  1. # -*- coding: <utf-8> -*- #
  2. import random
  3. import tkinter as tk
  4. from tkinter import messagebox
  5. import time

  6. from matplotlib.widgets import EllipseSelector

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

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

  20. 饥饿度: {}

  21. 速度: {}

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

  24. v = tk.IntVar()

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

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

  33. def QueDing():
  34.     global QueDing
  35.     if QueDing:
  36.         QueDing = True
  37.         print('True')
  38.     else:
  39.         QueDing = False
  40.         print('False')

  41. def ChuFa():
  42.     pass

  43. def ZhuangBei():
  44.     pass

  45. def ChaKanZhuangBei():
  46.     pass

  47. def WuPin():
  48.     pass

  49. def ShiYong():
  50.     pass

  51. def YiTian():
  52.     pass

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

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

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

  69. B = tk.Button(window, text='确定', bg='gray', width=25, height=2, command=QueDing)
  70. B.place(x=55, y=195)
  71. if QueDing == True:
  72.     if v.get() == 1:
  73.         print("haha")

  74. m = tk.Menu(window)
  75. f = tk.Menu(m, tearoff=0)
  76. m.add_cascade(label='返回', menu=f)
  77. f.add_command(label='返回主菜单', command=ZhuCaiDan)

  78. window.config(menu=m)

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

  81. window.mainloop()
复制代码


点了确定并按下第一个按钮但是并没有打印haha

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



你要把内容放到函数中去,例如可以设置个 button,设置 commad 触发函数,就可以查看每次的打印,否则放到主代码上就只会一开始运行一次


想知道小甲鱼最近在做啥?请访问 -> 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()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


’ 确定 ‘ 不就是一个Button吗?
想知道小甲鱼最近在做啥?请访问 -> 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() 中进行调用嗷

想知道小甲鱼最近在做啥?请访问 -> 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
复制代码


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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

哦,是我的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

敢问大佬,有没有办法让按钮按着的时候是True,松开时是False呢?
想知道小甲鱼最近在做啥?请访问 -> 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()
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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% ...

我的钱...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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