日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python listbox排序_python – 从tkinter.Listbox中提取项目列表

發(fā)布時間:2023/12/4 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python listbox排序_python – 从tkinter.Listbox中提取项目列表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我編寫了以下tkinter腳本來了解如何將數據列表添加到tkinter.Listbox小部件中.我發(fā)現(xiàn)了兩種方法.

接下來,我想從tkinter.Listbox小部件中提取相同的列表.在4種不同的方法中,我只設法讓第4種方法(即e4)起作用.

如何使e1,e2和e3方法起作用?最終目標是獲取最初提供給tkinter.Listbox小部件的相同列表.

測試腳本:

import tkinter as tk # Python 3 tkinter modules

import tkinter.ttk as ttk

class App(ttk.Frame):

def __init__(self, parent, *args, **kwargs):

# 1. Initialise Frame

ttk.Frame.__init__(self, parent)

self.parent = parent

# Method1

name1 = ['Peter', 'Scotty', 'Walter', 'Scott', 'Mary']

self.lb1_values = tk.StringVar(value=name1)

self.listbox1 = tk.Listbox(self, listvariable=self.lb1_values)

# Method2

self.listbox2 = tk.Listbox(self)

name2 = ['Sarah', 'Sean', 'Mora', 'Mori', 'Mary']

for item in name2:

self.listbox2.insert(tk.END, item)

self.listbox1.grid(in_=self, row=0, column=0, sticky='nsew')

self.listbox2.grid(in_=self, row=0, column=1, sticky='nsew')

# Extract values from listbox and covert to a list

e1 = self.lb1_values.get()

print('e1 = ', e1)

print('type(e1) = ', type(e1))

e1 = e1.strip(',')

print('e1 = ', e1)

e2 = self.listbox1.cget('listvariable')

print('\ne2 = ', e2)

print('type(e2) = ', type(e2))

e2 = e2.split(',')

print('e2 = ', e2)

e3 = self.listbox2.cget('listvariable')

print('\ne3 = ', e3)

print('type(e3) = ', type(e3))

e4 = self.listbox2.get(0, tk.END)

print('\ne4 = ', e4)

print('type(e4) = ', type(e4))

e4 = list(e4)

print('e4 = ', e4)

if __name__ == '__main__':

root = tk.Tk()

root.title('App'), root.geometry('400x200')

app = App(root)

app.grid(row=0, column=0, sticky='nsew')

#root.mainloop()

輸出:

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

type(e1) =

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

e2 = PY_VAR0

type(e2) =

e2 = ['PY_VAR0']

e3 =

type(e3) =

e4 = ('Sarah', 'Sean', 'Mora', 'Mori', 'Mary')

type(e4) =

e4 = ['Sarah', 'Sean', 'Mora', 'Mori', 'Mary']

解決方法:

您不能將StringVar用作listvariable屬性的目標.正如您的代碼所示,這會導致列表轉換為字符串.

但是,你可以做的是使用tk.Variable的一個實例. Variable是StringVar的基類. get的基本實現(xiàn)不會將值強制轉換為字符串.

name1 = ['Peter', 'Scotty', 'Walter', 'Scott', 'Mary']

self.lb1_values = tk.Variable(value=name1)

self.listbox1 = tk.Listbox(self, listvariable=self.lb1_values)

...

e1 = self.lb1_values.get()

print('e1 = ', e1)

print('type(e1) = ', type(e1))

print('e1 = ', e1)

以上產生了這個輸出:

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

type(e1) =

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

對于e2和e3,你必須跳過額外的箍.遺憾的是,cget方法返回內部變量名而不是對變量對象的引用.要按名稱獲取變量的值,您需要使用widget方法getvar.

例如:

e2 = self.listbox1.cget('listvariable')

print('\ne2 = ', e2)

print('type(e2) = ', type(e2))

print('e2 = ', self.getvar(e2))

以上產生了這個輸出:

e2 = PY_VAR0

type(e2) =

e2 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

標簽:python,listbox,tkinter

來源: https://codeday.me/bug/20190607/1195248.html

總結

以上是生活随笔為你收集整理的python listbox排序_python – 从tkinter.Listbox中提取项目列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。