❶ 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 參數標記要重繪的控制項,然後,只要使用相同的標簽去調用。這樣,我們就能實現僅清除該控制項,並將其重新繪制。