tkinter按钮触发的函数中的变量不受影响

Shylesh VR
def changecolour(event):
    selected_tkts=0
    button_clicked=event.widget
    if nooftkt_int==selected_tkts:
        print("OK")
    if button_clicked['bg']=='white':
        button_clicked['bg']='green'
        selected_tkts=selected_tkts+1
    elif button_clicked['bg']=='green':
        button_clicked['bg']='white'
        selected_tkts=selected_tkts-1

我使用循环创建了一些按钮,这些按钮的功能是命令。selected_tkts变量未注册,该变量的+1和-1在此函数中似乎不起作用,有人可以提出一种使它起作用的方法吗?

迈克尔·吉德利

Button命令不接受(event)您将必须使用lambda并传入Button此外,使用set.difference()简写,您可以轻松地将按钮颜色分配给不是该按钮的颜色。

另请:集合-无序集合

import tkinter as tk

root = tk.Tk()

#name functions according to their ultimate purpose, changing colour is an arbitrary effect
def toggle_ticket(tkt, tkt_id):

    #this is how you access external variables when using procedural programming
    global selected_tkts

    #if "numberof_tkts" is 0 then there is nothing to click and you couldn't end up here
    
    #toggle style
    tkt['bg'] = ({'white', 'green'} - {tkt['bg']}).pop()
    tkt['fg'] = ({'black', 'white'} - {tkt['fg']}).pop()
    
    #isn't it more helpful to know which tickets are selected?
    try:
        #remove tkt_id
        i = selected_tkts.index(tkt_id)
        selected_tkts.pop(i)
    except ValueError:
        #tkt_id didn't exist ~ append it instead
        selected_tkts.append(tkt_id)
        
    #proof
    print(selected_tkts)
    
    
numberof_tkts = 3
selected_tkts = []

tkt_style = dict(bg="white", fg='black')

tkt_1 = tk.Button(root, text="ticket 1", **tkt_style)
tkt_1.configure(command=lambda: toggle_ticket(tkt_1, 1))
tkt_1.pack()

tkt_2 = tk.Button(root, text="ticket 2", **tkt_style)
tkt_2.configure(command=lambda: toggle_ticket(tkt_2, 2))
tkt_2.pack()

tkt_3 = tk.Button(root, text="ticket 3", **tkt_style)
tkt_3.configure(command=lambda: toggle_ticket(tkt_3, 3))
tkt_3.pack()

root.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

变量在shell中不受影响

来自分类Dev

JQuery Ajax 成功函数中的全局变量不受影响

来自分类Dev

Makefile替代变量不受影响?

来自分类Dev

自定义视图中的样式在超级构造函数调用中不受影响

来自分类Dev

带有FOR EACH ROW的postgresql触发器影响不受影响的行

来自分类Dev

调整FormSheet的大小不受影响

来自分类Dev

内部联接行不受影响

来自分类Dev

Var在MySQL上不受影响

来自分类Dev

javascript中更改的meta标签内容属性值在twitter tweets中不受影响

来自分类Dev

如何使用php存储变量中受影响的行数?

来自分类Dev

挂载点目录中的现有文件是否安全且不受影响?

来自分类Dev

为什么我的UIButton的背景色在状态配置中不受影响?

来自分类Dev

在 android 中是否可以在单独的线程上保持 BLE 扫描,以便 UI 线程不受影响?

来自分类Dev

在 Kali 中交换密钥 AltGr 和 Space - Firefox 不受影响

来自分类Dev

挂载点目录中预先存在的文件是否安全且不受影响?

来自分类Dev

如何使“ xset s off”在重启后不受影响(12.04)

来自分类Dev

使用%时字体大小不受影响?

来自分类Dev

海拔变化时不受影响阴影大小 - 安卓

来自分类Dev

javascript动态内容在ajax调用时不受影响

来自分类Dev

打开快速启动-“重新启动不受影响”

来自分类Dev

xbacklight有效,系统设置不受影响

来自分类Dev

如何使“ xset s off”在重启后不受影响(12.04)

来自分类Dev

BIOS 输入挂起,但正常启动不受影响

来自分类Dev

Mysql 查询变为不受影响为 0

来自分类Dev

为什么CSCore均衡器SampleFilters [9](16Khz)在C#中完全不受影响

来自分类Dev

如何通过更改设置字体大小来使应用程序中的字体大小不受影响

来自分类Dev

如何在语句级触发器中获取受影响的基表行数

来自分类Dev

更新或插入时触发mysql-在受影响的行/行中更新字段

来自分类Dev

PostgreSQL函数返回受影响的行数

Related 相关文章

  1. 1

    变量在shell中不受影响

  2. 2

    JQuery Ajax 成功函数中的全局变量不受影响

  3. 3

    Makefile替代变量不受影响?

  4. 4

    自定义视图中的样式在超级构造函数调用中不受影响

  5. 5

    带有FOR EACH ROW的postgresql触发器影响不受影响的行

  6. 6

    调整FormSheet的大小不受影响

  7. 7

    内部联接行不受影响

  8. 8

    Var在MySQL上不受影响

  9. 9

    javascript中更改的meta标签内容属性值在twitter tweets中不受影响

  10. 10

    如何使用php存储变量中受影响的行数?

  11. 11

    挂载点目录中的现有文件是否安全且不受影响?

  12. 12

    为什么我的UIButton的背景色在状态配置中不受影响?

  13. 13

    在 android 中是否可以在单独的线程上保持 BLE 扫描,以便 UI 线程不受影响?

  14. 14

    在 Kali 中交换密钥 AltGr 和 Space - Firefox 不受影响

  15. 15

    挂载点目录中预先存在的文件是否安全且不受影响?

  16. 16

    如何使“ xset s off”在重启后不受影响(12.04)

  17. 17

    使用%时字体大小不受影响?

  18. 18

    海拔变化时不受影响阴影大小 - 安卓

  19. 19

    javascript动态内容在ajax调用时不受影响

  20. 20

    打开快速启动-“重新启动不受影响”

  21. 21

    xbacklight有效,系统设置不受影响

  22. 22

    如何使“ xset s off”在重启后不受影响(12.04)

  23. 23

    BIOS 输入挂起,但正常启动不受影响

  24. 24

    Mysql 查询变为不受影响为 0

  25. 25

    为什么CSCore均衡器SampleFilters [9](16Khz)在C#中完全不受影响

  26. 26

    如何通过更改设置字体大小来使应用程序中的字体大小不受影响

  27. 27

    如何在语句级触发器中获取受影响的基表行数

  28. 28

    更新或插入时触发mysql-在受影响的行/行中更新字段

  29. 29

    PostgreSQL函数返回受影响的行数

热门标签

归档