gpt4 book ai didi

Python clist 小部件不返回预期列表,仅返回每个项目的第一个字符

转载 作者:行者123 更新时间:2023-11-28 17:52:37 25 4
gpt4 key购买 nike

我写了一个简单的程序来打印出给定目录中的所有非隐藏文件和子目录。

我现在正尝试将我的代码迁移到我在 Google 上找到的列表小部件示例中。除了删除一些不需要的按钮外,我所做的只是整合我的代码的顶部部分,它部分工作,除了它只返回每个文件和子目录的第一个字符。所以我期望这样:

Desktop
Downloads
Scripts
textfile.txt
pron.avi

而是得到了这个:

D
D
S
t
p

这是我更改代码的示例(实际上只是第一个 def)

import gtk, os

class CListExample:
# this is the part Thraspic changed (other than safe deletions)
# User clicked the "Add List" button.
def button_add_clicked(self, data):
dirList=os.listdir("/usr/bin")
for item in dirList:
if item[0] != '.':
data.append(item)
data.sort()
return


def __init__(self):
self.flag = 0
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_size_request(250,150)

window.set_title("GtkCList Example")
window.connect("destroy", gtk.mainquit)

vbox = gtk.VBox(gtk.FALSE, 5)
vbox.set_border_width(0)
window.add(vbox)
vbox.show()

scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)

vbox.pack_start(scrolled_window, gtk.TRUE, gtk.TRUE, 0)
scrolled_window.show()

clist = gtk.CList(1)

# What however is important, is that we set the column widths as
# they will never be right otherwise. Note that the columns are
# numbered from 0 and up (to an anynumber of columns).
clist.set_column_width(0, 150)

# Add the CList widget to the vertical box and show it.
scrolled_window.add(clist)
clist.show()

hbox = gtk.HBox(gtk.FALSE, 0)
vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 0)
hbox.show()
button_add = gtk.Button("Add List")
hbox.pack_start(button_add, gtk.TRUE, gtk.TRUE, 0)

# Connect our callbacks to the three buttons
button_add.connect_object("clicked", self.button_add_clicked,
clist)

button_add.show()

# The interface is completely set up so we show the window and
# enter the gtk_main loop.
window.show()

def main():
gtk.mainloop()
return 0

if __name__ == "__main__":
CListExample()
main()

最佳答案

当你通过append方法向CList中添加数据时,你必须传递一个序列。重写你的代码:

def button_add_clicked(self, data):
dirList = os.listdir("/usr/bin")
for item in dirList:
if not item.startswith('.'):
data.append([item])
data.sort()

当您创建 CList 实例时,您将列数传递给构造函数。在您的示例中,您使用一个列创建了 CList,这就是为什么您只能在 append 方法中看到传递序列的第一个元素(第一个字符)。

关于Python clist 小部件不返回预期列表,仅返回每个项目的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6801370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com