Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 隐藏并显示ttk.Combobox下拉列表_Python_Tkinter_Combobox_Python 3.5_Ttk - Fatal编程技术网

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)
  • 使用组合框小部件对象。事件生成(“”)
  • 可以 使组合框下拉列表显示。事件
    似乎是 本质上被定义为导致这种行为
  • 背靠背运行此命令的2不会导致显示 和隐藏组合框下拉列表。它仍然只显示下拉列表 使用单个命令将列表设置为
  • “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张违例票吗?