我的程序运行正常,但是当我单击网格中执行该函数并在最后一个单元格中显示结果的按钮时,结果需要出现在第一个单元格中。此外,我们需要确保第一列是重点。如何实现这一目标?
import tkinter as tk
import pandas as pd
from tkinter import *
global mrowid
def print_value1(entry,row, col):
entry.delete(0, END)
entry.insert(0,'testing data')
entry.focus()
myStringVar.set(row)
def tcompile():
masterlines = []
i=1
for i in range(total_rows1):
row = []
j=2
for j in range(total_columns):
data = my_entries[i*total_columns+j].get()
# data = int(data) # Removed for testing purposes
row.append(data)
masterlines.append(row)
print(masterlines)
df = pd.DataFrame(masterlines)
df.columns =['Name', 'Code', 'Age', 'Weight','testmfa']
df = df.fillna(0)
root = tk.Tk()
total_rows = 5
total_rows1 = 5
total_columns =5
my_entries = []
for i in range(total_rows):
tk.Label(root, text='aaaaa11').grid(row=0, column=0)
tk.Label(root, text='aaaaa22').grid(row=0, column=1)
tk.Label(root, text='aaaaa33').grid(row=0, column=2)
tk.Label(root, text='aaaaa44').grid(row=0, column=3)
tk.Label(root, text='aaaaa555').grid(row=0, column=4)
tk.Label(root, text='buttttonnn ').grid(row=0, column=5)
j=1
for j in range(total_columns):
cell = tk.Entry(root)
cell.grid(row=i, column=j)
my_entries.append(cell)
b = Button(root, text="print value", command= lambda entry=cell,i=i,j=j: print_value1(entry,i,j), width=5)
b.grid(row=i, column=j+1)
button = tk.Button(root, text="Click me", command=tcompile)
button.grid(row=20, columnspan=total_columns)
myStringVar = StringVar()
ent4 = tk.Entry(root, text="", textvariable=myStringVar , width=10)
ent4.grid(row=20, column=0)
root.mainloop()
import tkinter as tk
import pandas as pd
from tkinter import *
global mrowid
def print_value1(entry, row, col):
entry.delete(0, END)
entry.insert(0, 'testing data')
# 设置焦点到第一列的对应行
my_entries[row * total_columns].focus()
myStringVar.set(row)
def tcompile():
masterlines = []
for i in range(total_rows1):
row = []
for j in range(total_columns):
data = my_entries[i*total_columns+j].get()
row.append(data)
masterlines.append(row)
df = pd.DataFrame(masterlines)
df.columns =['Name', 'Code', 'Age', 'Weight','testmfa']
df = df.fillna(0)
# 将结果显示在第一列的第一行
my_entries[0].delete(0, END)
my_entries[0].insert(0, str(df.iloc[0, 0])) # 获取 DataFrame 的第一个元素
my_entries[0].focus() # 设置焦点到第一个单元格
root = tk.Tk()
total_rows = 5
total_rows1 = 5
total_columns = 5
my_entries = []
for i in range(total_rows):
tk.Label(root, text='aaaaa11').grid(row=0, column=0)
tk.Label(root, text='aaaaa22').grid(row=0, column=1)
tk.Label(root, text='aaaaa33').grid(row=0, column=2)
tk.Label(root, text='aaaaa44').grid(row=0, column=3)
tk.Label(root, text='aaaaa555').grid(row=0, column=4)
tk.Label(root, text='buttttonnn ').grid(row=0, column=5)
for j in range(total_columns):
cell = tk.Entry(root)
cell.grid(row=i, column=j)
my_entries.append(cell)
b = Button(root, text="print value", command= lambda entry=cell,i=i,j=j: print_value1(entry,i,j), width=5)
b.grid(row=i, column=j+1)
button = tk.Button(root, text="Click me", command=tcompile)
button.grid(row=20, columnspan=total_columns)
myStringVar = StringVar()
ent4 = tk.Entry(root, text="", textvariable=myStringVar, width=10)
ent4.grid(row=20, column=0)
root.mainloop()
解释:
-
print_value1
函数修改:-
现在使用
my_entries[row * total_columns]
来定位到对应行的第一个单元格 (列索引为0),并使用.focus()
方法设置焦点。
-
现在使用
-
tcompile
函数修改:-
使用
my_entries[0]
获取第一个单元格。 -
使用
df.iloc[0, 0]
获取 DataFrame 中第一个元素的值 (第一行,第一列)。 -
使用
delete
和insert
方法将结果显示在第一个单元格。 -
使用
my_entries[0].focus()
设置焦点到第一个单元格。
-
使用
通过这些修改,点击按钮后,结果将显示在网格的第一行第一列,并且焦点也会自动设置到该单元格。
标签:python,tkinter From: 78801295