如何在Python';s Tkinter是否具有可编辑这些列表的按钮?
基本上,我希望有一个列表,它显示我存储在某个文件夹中的文件,在列表旁边有一些按钮,它们打开单独的窗口,可以编辑或向该列表添加新项目如何在Python';s Tkinter是否具有可编辑这些列表的按钮?,python,user-interface,listbox,tkinter,interactive,Python,User Interface,Listbox,Tkinter,Interactive,基本上,我希望有一个列表,它显示我存储在某个文件夹中的文件,在列表旁边有一些按钮,它们打开单独的窗口,可以编辑或向该列表添加新项目 我希望addchar打开一个新窗口,其中包含不同字段的空格,然后当您按下该窗口中的“创建”按钮时,它将关闭,根据您刚才输入的信息创建一个文件(这就是我导入os的原因),并在主界面的列表框中创建一个新项目作为角色的名称(这是其中一个字段)。removechar函数将删除该条目并删除文件,editchar将打开一个类似于addchar的窗口,但其中包含列表中所选项目的信
我希望addchar打开一个新窗口,其中包含不同字段的空格,然后当您按下该窗口中的“创建”按钮时,它将关闭,根据您刚才输入的信息创建一个文件(这就是我导入os的原因),并在主界面的列表框中创建一个新项目作为角色的名称(这是其中一个字段)。removechar函数将删除该条目并删除文件,editchar将打开一个类似于addchar的窗口,但其中包含列表中所选项目的信息 编辑:这是到目前为止的代码
from tkinter import *
import os
import easygui as eg
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
# character box
Label(frame, text = "Characters Editor").grid(row = 0, column = 0, rowspan = 1, columnspan = 2)
charbox = Listbox(frame)
for chars in []:
charbox.insert(END, chars)
charbox.grid(row = 1, column = 0, rowspan = 5)
charadd = Button(frame, text = " Add ", command = self.addchar).grid(row = 1, column = 1)
charremove = Button(frame, text = "Remove", command = self.removechar).grid(row = 2, column = 1)
charedit = Button(frame, text = " Edit ", command = self.editchar).grid(row = 3, column = 1)
def addchar(self):
print("not implemented yet")
def removechar(self):
print("not implemented yet")
def editchar(self):
print("not implemented yet")
root = Tk()
root.wm_title("IA Development Kit")
app = App(root)
root.mainloop()
好的,我为您实现了
addchar
和removechar
(并调整了代码中的一些其他内容)。我将把editchar
的实现留给您—看看我写了什么来帮助您,以及
好的,我为您实现了
addchar
和removechar
(并调整了代码中的一些其他内容)。我将把editchar
的实现留给您—看看我写了什么来帮助您,以及
你为什么不试着写一个这样做的程序,当你陷入困境时,在这里问一下?或者,如果您已经尝试解决此问题,请发布您编写的代码,以便我们可以帮助您。对此,我深表歉意。我输入了密码。没问题,很高兴你先试试。您的问题是“如何实现addchar、removechar和editchar”?如果是这样的话,你能确切地说明你希望他们做什么吗?你说了一些关于在目录中显示文件的内容,以及一些关于打开单独的窗口的内容,但我不确定你在问什么。我想让addchar打开一个新窗口,其中包含不同字段的空格,然后当你按下该窗口中的“创建”按钮时,它会关闭,根据你刚才输入的信息创建一个文件(这就是我导入os的原因)以及在主界面的列表框中创建一个新项作为角色的名称(这是其中一个字段)。removechar函数将删除该条目并删除文件,editchar将打开一个类似于addchar的窗口,但其中包含列表中所选项目的信息。感谢您的帮助。您为什么不尝试编写一个执行此操作的程序,然后在遇到问题时询问此处?或者,如果您已经尝试解决此问题,请发布您需要的代码很抱歉,我把代码放进去了。没问题,很高兴你先试试。你的问题是“如何实现addchar、removechar和editchar?”?如果是的话,你能明确说明你希望他们做什么吗?你说了一些关于在目录中显示文件的内容,以及一些关于打开单独的窗口的内容,但我不确定你在问什么。我希望addchar打开一个新窗口,其中包含不同字段的空格,然后当你按下“创建”按钮时按钮,根据您刚才输入的信息创建一个文件(这就是我导入os的原因),并在主界面的列表框中创建一个新项作为角色名称(其中一个字段)。removechar函数将删除该条目并删除文件,editchar将打开一个类似于addchar的窗口,但其中包含列表中所选项目的信息。感谢您的帮助。没问题,希望有帮助:)哦,而且,我的pyton 3.3无法处理Tkinter。它必须是tkinter.um,characterName=characterEntry.get()的部分似乎不起作用。这与initialCharacter有关吗?没关系,我发现将网格命令与生成小部件的命令分开解决了这个问题。无论如何,谢谢:)没问题,希望能有帮助:)哦,还有,我的pyton 3.3无法处理Tkinter。它必须是tkinter.um,characterName=characterEntry.get()的部分似乎不起作用。这与initialCharacter有关吗?没关系,我发现将网格命令与生成小部件的命令分开解决了这个问题。无论如何,谢谢你:)
from Tkinter import * # AFAIK Tkinter is always capitalized
#import os
#import easygui as eg
class App:
characterPrefix = "character_"
def __init__(self, master):
self.master = master # You'll want to keep a reference to your root window
frame = Frame(master)
frame.pack()
# character box
Label(frame, text = "Characters Editor").grid(row = 0, column = 0, rowspan = 1, columnspan = 2)
self.charbox = Listbox(frame) # You'll want to keep this reference as an attribute of the class too.
for chars in []:
self.charbox.insert(END, chars)
self.charbox.grid(row = 1, column = 0, rowspan = 5)
charadd = Button(frame, text = " Add ", command = self.addchar).grid(row = 1, column = 1)
charremove = Button(frame, text = "Remove", command = self.removechar).grid(row = 2, column = 1)
charedit = Button(frame, text = " Edit ", command = self.editchar).grid(row = 3, column = 1)
def addchar(self, initialCharacter='', initialInfo=''):
t = Toplevel(root) # Creates a new window
t.title("Add character")
characterLabel = Label(t, text="Character name:")
characterEntry = Entry(t)
characterEntry.insert(0, initialCharacter)
infoLabel = Label(t, text="Info:")
infoEntry = Entry(t)
infoEntry.insert(0, initialInfo)
def create():
characterName = characterEntry.get()
self.charbox.insert(END, characterName)
with open(app.characterPrefix + characterName, 'w') as f:
f.write(infoEntry.get())
t.destroy()
createButton = Button(t, text="Create", command=create)
cancelButton = Button(t, text="Cancel", command=t.destroy)
characterLabel.grid(row=0, column=0)
infoLabel.grid(row=0, column=1)
characterEntry.grid(row=1, column=0)
infoEntry.grid(row=1, column=1)
createButton.grid(row=2, column=0)
cancelButton.grid(row=2, column=1)
def removechar(self):
for index in self.charbox.curselection():
item = self.charbox.get(int(index))
self.charbox.delete(int(index))
try:
os.remove(characterPrefix + item)
except IOError:
print "Could not delete file", characterPrefix + item
def editchar(self):
# You can implement this one ;)
root = Tk()
root.wm_title("IA Development Kit")
app = App(root)
root.mainloop()