tkinter_treeview 单元格修改输入
效果如下

代码如下
点击查看代码
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 10 07:17:50 2024
@author: Administrator
"""
import tkinter as tk
from tkinter import ttk, Frame,Text,messagebox,Menu
class MY_GUI():
# global t_list
def __init__(self,window):
self.window = window
tab = ttk.Notebook(self.window)
self.window.geometry('650x320+400+300')
self.tab_frame=Frame(tab)
self.frame_account=Frame(self.tab_frame,width=120, height=200) #账户页面
self.tree_account = ttk.Treeview(self.frame_account, show='headings')
self.tree_account["columns"] = ('账户','仓位')
self.tree_account.column('账户', width=100)
self.tree_account.column('仓位', width=20)
self.tree_account.heading('账户', text='账户')
self.tree_account.heading('仓位', text='仓位')
yscrollbar_account = tk.Scrollbar(self.frame_account, orient='vertical', command=self.tree_account.yview)
yscrollbar_account.pack(side=tk.RIGHT, fill=tk.Y, expand='yes')
self.tree_account.config(yscrollcommand=yscrollbar_account.set)
self.tree_account.bind('<Double-1>', self.set_cell_value)#绑定左键双击修改键值===========
self.tree_account.pack(side='left', expand='yes', anchor='nw', fill='y', padx=1, pady=5)
self.frame_account.pack(side='left',expand='yes', anchor='nw', fill='y',padx=1, pady=5)
account_list=['073218','demo1']
for ix1 in range(len(account_list)):
account_name=account_list[ix1].strip()
self.tree_account.insert('',ix1,text=account_name,value=(account_name,0))
self.tab_frame.pack()
tab.add(self.tab_frame, text = "多账户下单")
tab.pack(expand = True, fill = tk.BOTH)
def set_cell_value(self,event): # 双击进入编辑状态
item=self.tree_account.selection()[-1]
column= self.tree_account.identify_column(event.x)# 列
if column=='#1':
return
row = self.tree_account.identify_row(event.y) # 行
cn = int(str(column).replace('#',''))
rn = int(str(row).replace('I',''))
# print(rn)
entryedit = Text(self.window,width=5+(cn-1)*6,height = 1)
entryedit.place(x=100+(cn)*00, y=40+rn*20)
entryedit.focus_set()
def saveedit():
x_=entryedit.get(0.0, "end").strip()
if x_=='' or not x_.isdigit():
pass
else:
self.tree_account.set(item, column=column, value=entryedit.get(0.0, "end"))
entryedit.destroy()
okb.destroy()
okb = ttk.Button(self.window, text='ok', width=4, command=saveedit)
okb.place(x=135+(cn-1)*6,y=40+rn*20)
if __name__ == "__main__":
root = tk.Tk()
X_GUI=MY_GUI(root)
root.mainloop()

浙公网安备 33010602011771号