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()
posted @ 2024-08-10 08:08  远方_2408  阅读(44)  评论(0)    收藏  举报