我的编程空间,编程开发者的网络收藏夹
学习永远不晚

tkinter禁用(只读)下拉列表Combobox问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

tkinter禁用(只读)下拉列表Combobox问题

tkinter禁用(只读)下拉列表Combobox

tkinter将下拉列表框Combobox控件的状态设置为只读,也就是不可编辑状态:

# 定义下拉列表值
self.Combo3List = [1, 2, 3,]
# 定义下拉列表控件,self.Frame1为Combobox的父级, state表示Combobox的状态,readonly为只读,disabled为禁用
self.Combo3 = Combobox(self.Frame1, values=self.Combo3List, font=("宋体",9), state="readonly")
# 放置控件
self.Combo3.place(relx=0.884, rely=0.627, relwidth=0.053, relheight=0.089)
# 设置Combobox的默认值为Combo3List集合的第一个元素
self.Combo3.set(self.Combo3List[0])

tkinter中大部分控件都拥有state属性,上面代码段中的state属性也可以在Combobox的Configure()函数中进行配置。

如下:

# 设置状态为只读
self.Combo3.configure(state="readonly")
# 设置状态为禁用
#self.Combo3.configure(state="disabled")

tkinter知识点使用记录

引入模块与创建实例

import tkinter as tk
root = tk.TK()

窗口属性设置

# 设置窗口标题
root.title('考试广播系统')
# 设置窗口图标
root.iconbitmap(EXAM_ICON)
# 设置窗口背景色
root.configure(background='#d4d0c8')
# 禁用调整GUI大小
root.resizable(0, 0)
# 获取屏幕宽高
sc_w = self.winfo_screenwidth()
sc_h = self.winfo_screenheight()
# 设置窗口大小
root.geometry(f"560x360+{(sc_w - 560) // 2}+{(sc_h - 360) // 2 - 40}")
# 隐藏窗口,设置后窗口固定
root.overrideredirect(1)

退出时弹窗确定

from tkinter import messagebox

def quit_ui():
    if messagebox.askokcancel("退出", "你想退出窗口吗?"):
       self.quit()
       self.destroy()


# 设置窗口属性时一并设置
root.protocol('WM_DELETE_WINDOW', quit_ui)

如何向绑定方法中传递参数

一般向按钮添加事件方法:

tk.Button(self, text='登录(L)', width=10, bg="#d4d0c8", command=login_btn).place(x=164, y=300)

如果向在绑定方法时传递参数,可以使用下面这种方法:

tk.Button(self, text='登录(L)', width=10, bg="#d4d0c8", command=lambda: login_btn('l')).place(x=164, y=300)

按钮绑定快捷键

# 在方法中定义触发事件
root.bind_all('<Control-l>', login_btn)

鼠标放在按钮提示信息

import Pmw
balloon = Pmw.Balloon(root)
# 创建按钮对象
quit_btn = tk.Button(self, image=take_quit_img, bg="#d4d0c8",
                      command=lambda: _audio_control("quit"))
quit_btn.place(width=30, height=130, x=870, y=382)
balloon.bind(quit_btn, "隐藏控件")

注意:在创建控件后,如何先布局再赋值,那么控件对象是无效,需要先赋值再布局

# 这种方式是无法实现赋值的
quit_btn = tk.Button(self, image=take_quit_img, bg="#d4d0c8",
                      command=lambda: _audio_control("quit")).place(width=30, height=130, x=870, y=382)

输入框接收数据

注意:如果是在类中创建tk对象,那么tk.StringVar()需要在__init__方法中声明,不然不能使用

fwq_var_name = tk.StringVar()
# 输入框设置初始值
fwq_var_name.set("七星耀月")
tk.Entry(root, textvariable=fwq_var_name, width=38, bd=3).place(x=250, y=100)

如何显示图片

# 比如为按钮控件添加图片
take_ws_img = tk.PhotoImage('图片所在绝对路径')
sshow_btn = tk.Button(root, image=take_ws_img , bg="#d4d0c8", command=show_other_btn)
show_btn.place(width=50, height=50, x=813, y=13)

动态更改控件的属性

# 比如动态更改按钮显示的图片,在config中修改指定参数即可
show_btn.config(image=take_right_img)

实现下拉菜单

km_var_name = tk.StringVar()  # 接收下拉选择的值
SUBJECT_LIST = ("语文", "数学", "英语", "物理", "化学", "地理", "历史")
sub_box = ttk.Combobox(root, textvariable=km_var_name)
sub_box["values"] = SUBJECT_LIST
sub_box.current(0)
sub_box.bind("<<ComboboxSelected>>", get_sub_box)
sub_box.place(width=150, height=24, x=175, y=103)

效果参考:

实现切换导航栏

btn_choose_value = tk.IntVar()
btn_choose_value.set(0)
tk.Radiobutton(root, variable=self.btn_choose_value, bg="#d4d0c8", anchor="n", text="信息提示", value=0, indicatoron=0, command=self.show_or_hide_info).place(x=380, y=336)
tk.Radiobutton(root, variable=self.btn_choose_value, bg="#d4d0c8", text="语音播放内容", alue=1, anchor="n", indicatoron=0, command=self.show_or_hide_info).place(x=488, y=336)

效果参考:

效果图

实现列表

menu_frame = tk.Frame()
frame = tk.LabelFrame(root, labelwidget=menu_frame, bg="white", borderwidth=2, padx=10, pady=8, relief="sunken")
y_bar = tk.Scrollbar(frame, orient="vertical", bd=0, width=14)

list_box = tk.Listbox(frame, bg="white", yscrollcommand=y_bar.set, border=0, highlightthickness=0, selectforeground="blue", selectbackground="#d4d0c8", activestyle="none", font=("微软雅黑", 8), height=4)
y_bar['command'] = list_box.yview
y_bar.pack(side="right", fill="y")
list_box.pack_forget()

info_list_box = tk.Listbox(frame, bg="white", yscrollcommand=y_bar.set, border=0, highlightthickness=0, font=("微软雅黑", 8), height=4)
y_bar['command'] = info_list_box.yview
y_bar.pack(side="right", fill="y")
info_list_box.pack(anchor="nw", fill="both", expand="yes")
info_list_box.insert('end', f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 启动服务")
info_list_box.insert('end', f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 更新语音文件成功")

frame.place(width=480, height=124, x=380, y=362)

效果参考:

解决获取不到新窗口文本框内容

使用了tk.Tk()方法来新建窗口,这样得到的是一个新的根窗口,无法与原来的根窗口进行有效交互。

因此需要使用Toplevel组件新建顶级窗口

new_tk = tk.Toplevel()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

tkinter禁用(只读)下拉列表Combobox问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

tkinter禁用(只读)下拉列表Combobox问题

这篇文章主要介绍了tkinter禁用(只读)下拉列表Combobox问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-28

利用tkinter改变下拉列表(Combobox)的选项值

这篇文章主要介绍了利用tkinter改变下拉列表(Combobox)的选项值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录