开始使用 Tkinter,是否可以使用复选按钮显示/隐藏标签?

发布于 2025-01-11 19:30:46 字数 79 浏览 0 评论 0原文

只是寻找一个示例,我知道它可以使用按钮,但我想使用 Checkbutton 的不同状态(onvalue 和 offvalue)来显示和隐藏标签。

just looking for an example, I know its possible with buttons but I wanted to use the different states of a Checkbutton (onvalue and offvalue) to show and hide a label.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

じее 2025-01-18 19:30:46

您可以使用检查按钮属性 command 来实现此目的,以便在用户每次更改检查按钮的状态时调用一个函数。

def show_hide_func():
    if cb_val == 1:
        your_label.pack_forget() 
        # if you are using grid() to create, then use grid_forget()

    elif cb_val == 0:
        your_label.pack()


cb_val = tk.IntVar()

tk.Checkbutton(base_window, text="Click me to toggle label", variable=cb_val , onvalue=1, offvalue=0, command=show_hide_func).pack()

有关检查按钮和其他 Tkinter 小部件的详细文档,请阅读此处

You can achieve this using the check button property command to call a function every time user changes the state of the check button.

def show_hide_func():
    if cb_val == 1:
        your_label.pack_forget() 
        # if you are using grid() to create, then use grid_forget()

    elif cb_val == 0:
        your_label.pack()


cb_val = tk.IntVar()

tk.Checkbutton(base_window, text="Click me to toggle label", variable=cb_val , onvalue=1, offvalue=0, command=show_hide_func).pack()

For detailed documentation about the check button and other Tkinter widgets read here

◇流星雨 2025-01-18 19:30:46

只需使用 comman=function 运行隐藏的代码 (pack_forget()/grid_forget()/place_forget() )并再次显示(pack()/grid(...)/place(...))。

使用 pack() 可能会出现问题,因为它会再次显示它,但在其他小部件的末尾 - 因此您可以将 Label 保留在 Frame 内其中不会有其他小部件。 放在 checkbox 之前的相同位置(在 checkbox 之前)


或者您可以使用 pack(before=checkbox) (或类似选项)再次将Label 代码>框架

import tkinter as tk
        
# --- functions ---

def on_click():
    print(checkbox_var.get())
    
    if checkbox_var.get():
        label.pack_forget()
    else:        
        label.pack()
    
# --- main ---

root = tk.Tk()

frame = tk.Frame(root)
frame.pack()

label = tk.Label(frame, text='Hello World')
label.pack()

checkbox_var = tk.BooleanVar()
checkbox = tk.Checkbutton(root, text="select", variable=checkbox_var, command=on_click)
checkbox.pack()

root.mainloop()   

使用<代码>包(之前=复选框)

import tkinter as tk
        
# --- functions ---

def on_click():
    print(checkbox_var.get())
    
    if checkbox_var.get():
        label.pack_forget()
    else:        
        label.pack(before=checkbox)
    
# --- main ---

root = tk.Tk()

label = tk.Label(root, text='Hello World')
label.pack()

checkbox_var = tk.BooleanVar()
checkbox = tk.Checkbutton(root, text="select", variable=checkbox_var, command=on_click)
checkbox.pack()

root.mainloop()   

Simply use comman=function to run code which hide (pack_forget()/grid_forget()/place_forget()) and show it again (pack()/grid(...)/place(...)).

With pack() can be the problem because it will show it again but at the end of other widgets - so you could keep Label inside Frame which will not have other widgets. Or you can use pack(before=checkbox) (or simiar options) to put again in the same place (before checkbox)


Label inside Frame

import tkinter as tk
        
# --- functions ---

def on_click():
    print(checkbox_var.get())
    
    if checkbox_var.get():
        label.pack_forget()
    else:        
        label.pack()
    
# --- main ---

root = tk.Tk()

frame = tk.Frame(root)
frame.pack()

label = tk.Label(frame, text='Hello World')
label.pack()

checkbox_var = tk.BooleanVar()
checkbox = tk.Checkbutton(root, text="select", variable=checkbox_var, command=on_click)
checkbox.pack()

root.mainloop()   

use pack(before=checkbox)

import tkinter as tk
        
# --- functions ---

def on_click():
    print(checkbox_var.get())
    
    if checkbox_var.get():
        label.pack_forget()
    else:        
        label.pack(before=checkbox)
    
# --- main ---

root = tk.Tk()

label = tk.Label(root, text='Hello World')
label.pack()

checkbox_var = tk.BooleanVar()
checkbox = tk.Checkbutton(root, text="select", variable=checkbox_var, command=on_click)
checkbox.pack()

root.mainloop()   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文