我想更改矩陣中的數字,然后將其顯示在同一個 tk 視窗中,但我發現很難處理來自輸入的變數。的r[][]應該是與用戶的輸入所形成的矩陣。畢竟我必須r[0][1] = 5在同一個 tk 視窗中顯示修改后的矩陣:。
from tkinter import *
import numpy as np
root = Tk()
def process():
values = [e1.get(),e2.get(),e3.get(),e4.get()]
a = np.zeros((2,2),dtype=np.int64)
for i in range(2):
for j in range(2):
a[i][j] = values[i*2 j]
print(a)
e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e4 = Entry(root)
e1.grid(row=0,column=0,padx=10,pady=10)
e2.grid(row=0,column=1)
e3.grid(row=1,column=0,padx=10,pady=10)
e4.grid(row=1,column=1)
b = Button(root,text='Process',command=process)
b.grid(row=2,column=0,columnspan=4,sticky=E W)
root.mainloop()
r=[[e1.get(),e2.get()],[e3.get(),e4.get()]]
r[0][1] = 5
uj5u.com熱心網友回復:
Tkinter GUI 程式是事件驅動的,它需要使用與您可能熟悉的稱為命令式編程的編程范式不同的編程范式。換句話說,幾乎所有發生的事情都是為了回應用戶所做的事情而完成的,比如在鍵盤上打字、點擊圖形按鈕、移動滑鼠??等。
我認為下面的代碼會讓你很好地了解如何在這樣的框架中做你想做的事。它StringVar為每個Entry小部件創建一個,其優點是Entry每當相應StringVar的更改時,每個小部件中顯示的內容都會自動更新(使其或多或少是自動的)。
import tkinter as tk
from tkinter.constants import *
ROWS, COLS = 2, 2
def process(variables, col, row):
try:
value = float(variables[row][col].get())
except ValueError: # Nothing was entered.
value = 0
value = 5
variables[row][col].set(value)
root = tk.Tk()
# Create tkinter Variables to hold matrix element values.
matrix_elems = [[tk.StringVar(master=root)
for i in range(COLS)]
for j in range(ROWS)]
# Use Variables to create Entry widgets.
entries = [[tk.Entry(root, textvariable=matrix_elems[j][i])
for i in range(COLS)]
for j in range(ROWS)]
# Position the matrix Entry widgets in a grid.
for j, row in enumerate(entries):
for i, entry in enumerate(row):
entry.grid(column=i, row=j)
btn = tk.Button(root, text='Process', command=lambda: process(matrix_elems, 0, 1))
btn.grid(row=2, column=0, columnspan=COLS, sticky=E W)
root.mainloop()
uj5u.com熱心網友回復:
這會是你要找的嗎?我洗掉了一堆在背景關系中似乎沒有任何作用的代碼——你只是想替換角落框中的文本對嗎?
from tkinter import *
def process():
replace(e4)
def replace(entry_loc):
temp = int(entry_loc.get())
temp = 5
entry_loc.delete(0,500)
entry_loc.insert(0, temp)
root = Tk()
var_e1 = StringVar
var_e2 = StringVar
var_e3 = StringVar
var_e4 = StringVar
e1 = Entry(root, textvariable=var_e1)
e2 = Entry(root, textvariable=var_e2)
e3 = Entry(root, textvariable=var_e3)
e4 = Entry(root, textvariable=var_e4)
e1.grid(row=0, column=0, padx=10, pady=10)
e2.grid(row=0, column=1)
e3.grid(row=1, column=0, padx=10, pady=10)
e4.grid(row=1, column=1)
b = Button(root, text='Process', command=process)
b.grid(row=2, column=0, columnspan=4, sticky=E W)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/336851.html
標籤:Python 用户界面 特金特 矩阵 tkinter-entry
上一篇:指令啟用鍵盤導航(使用選項卡)
