❶ python tkinter 如何做一个如下所示的下拉菜单
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()
仅供参考。
❷ Python DearPyGui 常用控件一
菜单栏是一个 GUI 应用中重要的控件,始终显示在窗口顶部,并具有三个主要部分:
菜单可以根据需要嵌套,而且任何控件都可以添加到菜单中,例如下面栗子中的 “控件列表” 菜单。
通过 select_directory_dialog 来调用目录对话框,而且必须为其提供回调方法。 回调方法返回的 data 参数中将包含 目录路径 和 文件夹路径 。通常,目录对话框是由另一个控件(例如下面栗子中的按钮)调用的。
通过 open_file_dialog 可以调用文件对话框,同样,必须为其提供回调方法,回调方法返回的 data 参数中将包含 目录路径 和 文件名称 。 extensions 是文件对话框的可选参数,可以设置对文件扩展名的过滤,控制显示哪些后缀名的文件。
Dear PyGui 具有 simple_plot (简单绘图)和 plot (绘图)两个绘图方式,两者都是动态的。 simple_plot (简单绘图)接受列表参数,并基于列表中的数据数据绘制 y轴 数据,可以是折线图或直方图。
而 plot (绘图)则具有更多的功能,绘图同时使用 x轴 和 y轴 坐标,使用 add_plot 方法创建,然后可以将数据作为线形图或散布图添加, plot (绘图)的特点有:
另外,鼠标停留在绘图上时,会出现数值类型的浮动文本。
通过 set_value 方法可以更改绘图调用的值,使 simple_plot (简单绘图)实现动态实时绘制。
同样的, plot (绘图)也可以动态实时绘制,举个栗子,我们使用 set_render_callback 设置一个渲染回调实现动态绘制。
Dear PyGui 有一个低级绘图 API,可以用来原始绘画、自定义控件甚至动态绘画。先通过调用 add_drawing 方法开始绘画,再通过调用各种绘画方法来添加笔画。需要注意的是,画布的原点位于左下角。
绘画( drawing )具有可以获取和设置的缩放( origin )、原点( origin )和尺寸( size )属性,缩放( origin )是 x 和 y 值的乘数,尺寸( size )以像素为单位。
绘画( drawing )可以显示的图像类型有 .png 、 .jpg 、 .bmp ,使用时需掉用 draw_image 以绘制图像。通过 pmin 和 pmax 参数,我们可以将图像绘制到画布上矩形的左上和右下区域,图像会缩放自动缩放以适应指定区域。
使用 uv_min 和 uv_max 参数,我们可以控制图像要绘制到哪个区域的 标量(scalar) ,默认情况下, uv_min = [0,0] 和 uv_max = [1,1] 将显示整个图像,而 uv_min = [0,0] 和 uv_max = [0.5,0.5] 则仅显示图形的一部分。
尽管我们可以通过清除和重绘整个图来实现图形的动态化,但是 DearPyGui 还提供了一种更有效的方法,要使绘画( drawing )动态化,应该使用 tag 参数标记要重绘的控件,然后,只要使用相同的标签去调用。这样,我们就能实现仅清除该控件,并将其重新绘制。