python tkinter 如何做一个如下所示的下拉菜单
3个回答
展开全部
Tkinter居然没有这种组件,所以就只能模拟了
#! /usr/bin/python
# -*- coding: utf8 -*-
from Tkinter import *
class Select(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.label = Label(self, text="选择项目")
self.listBox = Listbox(self, height=1)
self.button = Button(self, text='V', command=self.triggle)
self.hideList = True
for i in xrange(10):
self.listBox.insert(i, 'Item%d'%i)
self.label.grid(row=0, column=0, sticky=N)
self.listBox.grid(row=0, column=1, sticky=N)
self.button.grid(row=0, column=2, sticky=N)
self.grid()
def triggle(self):
self.hideList ^= 1
self.listBox.config(height=[self.listBox.size(), 1][self.hideList])
app = Select()
app.mainloop()
仅供参考。
2019-06-28
展开全部
这个要用ttk库
python37下的示例:
from tkinter import *
import tkinter.ttk #python32以下省略,因为__all__属性已包含ttk,自动导入,python32以下tkinter.ttk改为ttk
tk=Tk()
def re():
print(c.get())
c = tkinter.ttk.Combobox(tk)
c.grid(row=3,column=1)
c['value'] = ("1","2") #必须str类型或int类型,不支持flont和complex(Python27中是long)类型
具体其他属性参照源码或度娘上搜“tkinter下拉列表”,CSDN里有N个东西
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-02-28 · 知道合伙人软件行家
关注
展开全部
你这不是菜单,你这是下拉列表框,combobox控件。tkinter默认是不带的。
但是TKINTER有一个“隐藏功能”,导入ttk主题库后,你就可以用ComboBox等高级控件了 。
给你个例子,你就知道怎么写了。
#coding:utf-8
import sys
import Tkinter
import Pmw
class Demo:
def __init__(self, parent):
parent.configure(background = 'white')
self.target = Tkinter.Label(
parent,
relief = 'sunken',
padx = 20,
pady = 20,
)
self.target.pack(fill = 'x', padx = 8, pady = 8)
colours = ('cornsilk1', 'snow1', 'seashell1', 'antiquewhite1',
'bisque1', 'peachpuff1', 'navajowhite1', 'lemonchiffon1',
'ivory1', 'honeydew1', 'lavenderblush1', 'mistyrose1')
dropdown = Pmw.ComboBox(
parent,
label_text = 'Dropdown ComboBox:',
labelpos = 'nw',
selectioncommand = self.changeColour,
scrolledlist_items = colours,
)
dropdown.pack(side = 'left', anchor = 'n',
fill = 'x', expand = 1, padx = 8, pady = 8)
first = colours[0]
dropdown.selectitem(first)
self.changeColour(first)
def changeColour(self, colour):
print 'Colour: ' + colour
self.target.configure(background = colour)
if __name__ == '__main__':
root = Tkinter.Tk()
Pmw.initialise(root)
widget = Demo(root)
root.mainloop()
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询