我在 3 天前開始編碼!到目前為止,這很有趣,但我已經鼓勵了我的第一個路障。我想創建一個“檔案”按鈕,該按鈕執行與在任何其他應用程式中相同的功能:打開、保存和另存為。到目前為止,我可以做的是單擊檔案按鈕以顯示我的三個選項。
from tkinter import *
root = Tk()
def MyFiles():
my_ListFile = Listbox(root, selectmode="single", bg="light grey", width=18, height=3, font=('Helvetica 10'))
my_ListFile.place(x=0, y=27)
# Additing items to list box
my_ListFile.insert(END, "Open")
my_ListFile.insert(END, "Save")
my_ListFile.insert(END, "Save As")
def oneselect(event):
listB = event.widget
idx = int(listB.curselection()[0])
value = w.get(idx)
# if the value is open, then open the directory and close the listbox
# if the value is Save, then save the current GUI and close the listbox
#if the value is Save As, open directory and close list box
File = Button(root, text="File", command=MyFiles, width=15, font=('Helvetica 10')).place(x=1, y=1)
root.mainloop()
如何單擊串列中的每個選項以執行不同的功能?我正在嘗試構建一個 GUI。
uj5u.com熱心網友回復:
我想你可能正在尋找類似下面的東西:

您也許可以嘗試以下方法:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
from tkinter.messagebox import showinfo
# create the root window
root = tk.Tk()
root.title('Tkinter Dialog')
root.resizable(False, False)
root.geometry('300x150')
# helper function to select a file to open
def select_file():
filetypes = (
('text files', '*.txt'),
('All files', '*.*')
)
filename = fd.askopenfilename(
title='Open a file',
initialdir='/',
filetypes=filetypes)
showinfo(
title='Selected File',
message=filename
)
# helper function to save a file
def file_save():
filetypes = (
('text files', '*.txt'),
('All files', '*.*')
)
f = fd.asksaveasfile(
title='Save a file',
mode='w',
defaultextension=".txt")
if f is None: # asksaveasfile return `None` if dialog closed with "cancel".
return
# helper function to save a file
def file_save_as():
filetypes = (
('text files', '*.txt'),
('All files', '*.*')
)
f = fd.asksaveasfile(
title='Save a file',
mode='w',
defaultextension=".txt")
if f is None: # asksaveasfile return `None` if dialog closed with "cancel".
return
def Click(e, var):
def VG(var):
select_file()
def G(var):
file_save()
def P(var):
file_save_as()
e.widget.focus()
nclst=[(' Open', lambda var = var: VG(var)),
(' Save', lambda var = var: G(var)),
(' Save As', lambda var = var: P(var)),]
my_menu = tk.Menu(None, tearoff=0, takefocus=0)
for (txt, cmd) in nclst:
my_menu.add_command(label=txt, command=cmd)
my_menu.tk_popup(e.x_root 40, e.y_root 10,entry="0")
l_var = tk.StringVar()
lab = tk.Label(root, textvariable = l_var, width = 10)
l_var.set("File")
lab.bind('<Button-1>', lambda e, var = l_var: Click(e, var))
lab.pack()
# run the application
root.mainloop()
請注意,您需要修改檔案打開、保存和另存為方法的特定功能以滿足您的特定需求 - 但這可能有助于入門
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/531088.html
下一篇:在Kivy中每秒顯示一個亂數
