Python 隐藏并显示ttk.Combobox下拉列表
情况:当我用鼠标键点击Python 隐藏并显示ttk.Combobox下拉列表,python,tkinter,combobox,python-3.5,ttk,Python,Tkinter,Combobox,Python 3.5,Ttk,情况:当我用鼠标键点击ttk.组合框的“向下箭头”时,它的标准行为是显示一个下拉列表。第二次单击向下箭头时,组合框下拉列表将隐藏 使用键盘。按一次“向下箭头”可以显示组合框下拉列表。进一步按下“向下箭头”将向下滚动下拉列表至其末尾。反复按“向上箭头”将向上滚动下拉列表,直到突出显示/选择到达下拉列表的顶部,但最终不会隐藏下拉列表 问题:如果不使用鼠标或键盘,即使用计算机编程,我如何隐藏ttk.Combobox的expose下拉列表。我知道w.event\u generate(“”命令可用于编程t
ttk.组合框的“向下箭头”时,它的标准行为是显示一个下拉列表。第二次单击向下箭头时,组合框下拉列表将隐藏
使用键盘。按一次“向下箭头”可以显示组合框下拉列表。进一步按下“向下箭头”将向下滚动下拉列表至其末尾。反复按“向上箭头”将向上滚动下拉列表,直到突出显示/选择到达下拉列表的顶部,但最终不会隐藏下拉列表
问题:如果不使用鼠标或键盘,即使用计算机编程,我如何隐藏ttk.Combobox的expose下拉列表
。我知道w.event\u generate(“”
命令可用于编程ttk.Combobox
以显示其下拉列表。但我如何才能达到相反的效果呢?也就是说,如何使用相同的w.event_generate()命令隐藏下拉列表?或者我应该使用什么其他tkinter命令来实现我想要的?我对这个问题进行了多次尝试,最终找到了一种通过编程隐藏combobox滴列表的方法。我的代码如下所示
观察结果:
# tkinter modules
import tkinter as tk
import tkinter.ttk as ttk
"""
Aim:
Create a combobox widget and use w.event_generate(sequence, sequence,**kw) to
simulate external stimuli to cause combobox dropdown list to show and hide.
Author: Sun Bear
Date: 16/01/2017
"""
# Function to activate combobox's '<Button-1>' event
def _source_delayed_clicked():
print ('\n def __source_delayed_clicked():')
print('Delayed 2nd simulation of external stimuli')
print('HIDE combobox Dropdown list. \n'
'IT WORKED!')
source.event_generate('<Button-1>')
root = tk.Tk()
source_var=tk.StringVar()
reference=['Peter', 'Scotty', 'Walter', 'Scott', 'Mary', 'Sarah']
# Create Main Frame in root
frame0 = ttk.Frame(root, borderwidth=10, relief=tk.RAISED)
frame0.grid(row=0, column=0, sticky='nsew')
# Create Combobox
source = ttk.Combobox(frame0, textvariable=source_var, values=reference)
source.grid(row=0, column=0, sticky='nsew')
# Simulate external stimuli using w.event_generate(sequence,**kw)
print('\n', '1st simulation of external stimuli using: \n'
' source.event_generate('"<Button-1>"') \n'
' SHOW Combobox Dropdown List.')
source.event_generate('<Button-1>')
#source.event_generate('<Button-1>') # running another similar command
# back to back didn't work
delay = 1000*6 # 6 seconds delay
source.after(delay, _source_delayed_clicked)
使用组合框小部件对象。事件生成(“”)
可以
使组合框下拉列表显示。事件“
似乎是
本质上被定义为导致这种行为
“combobox\u widget\u object.after(delay\u ms,callback=None,*args)”
方法可用于指示组合框运行函数
经过一定的时间延迟。该函数应包含“combobox\u widget\u object.event\u generate(“”)”方法导致
隐藏下拉列表
# tkinter modules
import tkinter as tk
import tkinter.ttk as ttk
"""
Aim:
Create a combobox widget and use w.event_generate(sequence, sequence,**kw) to
simulate external stimuli to cause combobox dropdown list to show and hide.
Author: Sun Bear
Date: 16/01/2017
"""
# Function to activate combobox's '<Button-1>' event
def _source_delayed_clicked():
print ('\n def __source_delayed_clicked():')
print('Delayed 2nd simulation of external stimuli')
print('HIDE combobox Dropdown list. \n'
'IT WORKED!')
source.event_generate('<Button-1>')
root = tk.Tk()
source_var=tk.StringVar()
reference=['Peter', 'Scotty', 'Walter', 'Scott', 'Mary', 'Sarah']
# Create Main Frame in root
frame0 = ttk.Frame(root, borderwidth=10, relief=tk.RAISED)
frame0.grid(row=0, column=0, sticky='nsew')
# Create Combobox
source = ttk.Combobox(frame0, textvariable=source_var, values=reference)
source.grid(row=0, column=0, sticky='nsew')
# Simulate external stimuli using w.event_generate(sequence,**kw)
print('\n', '1st simulation of external stimuli using: \n'
' source.event_generate('"<Button-1>"') \n'
' SHOW Combobox Dropdown List.')
source.event_generate('<Button-1>')
#source.event_generate('<Button-1>') # running another similar command
# back to back didn't work
delay = 1000*6 # 6 seconds delay
source.after(delay, _source_delayed_clicked)
#tkinter模块
将tkinter作为tk导入
将tkinter.ttk导入为ttk
"""
目标:
创建一个组合框小部件并使用w.event_generate(sequence,sequence,**kw)来
模拟外部刺激,使组合框下拉列表显示和隐藏。
作者:太阳熊
日期:2017年1月16日
"""
#函数来激活组合框的“”事件
def_source_delayed_clicked():
打印(“\n def\u source\u delayed\u clicked():”)
打印(“外部刺激的延迟第二次模拟”)
打印('隐藏组合框下拉列表。\n'
“成功了!”)
source.event_generate(“”)
root=tk.tk()
source_var=tk.StringVar()
参考=['Peter'、'Scotty'、'Walter'、'Scott'、'Mary'、'Sarah']
#在根目录中创建主框架
frame0=ttk.Frame(根,边框宽度=10,浮雕=tk.RAISED)
frame0.grid(行=0,列=0,sticky='nsew')
#创建组合框
source=ttk.Combobox(frame0,textvariable=source\u var,values=reference)
grid(行=0,列=0,sticky='nsew')
#使用w.event_generate(序列,**kw)模拟外部刺激
打印('\n',使用:\n'第一次模拟外部刺激
'source.event_generate(''')\n
“显示组合框下拉列表。”)
source.event_generate(“”)
#source.event_generate(“”)#运行另一个类似命令
#背靠背没用
延迟=1000*6#6秒延迟
source.after(延迟,\u source\u delayed\u单击)
更新:
或者,要隐藏combobox下拉列表,请使用以下命令
source.event\u generate(“”)
可以用来代替函数def\u source\u delayed\u clicked()中定义的source.event\u generate(“”)
命令。这模拟了按下键盘“Esc”
键 有人能解释一下为什么我的问题得了2张违例票吗?