Ser*_*gey -2 python user-interface tkinter pyqt4
Python 3.3.2 Hello.My问题 - 需要为输入数据(矩阵或表)创建GUI.并从此表单数据中获取.例如:
float
完美的解决方案是输入形式的限制(只有浮动).
问题:我能用什么?Tkinter没有表.. wxPython不支持Python 3. PyQt4?(mb你有例子如何从tabel中获取数据A=[[1.02,-0.25,-0.30,0.515],[-0.41,1.13,-0.15,1.555],[-0.25,-0.14,1.21,2.780]]?)
任何人都有想法?
Bry*_*ley 10
使用tkinter,您不需要特殊的表小部件来执行此操作 - 只需创建正常条目小部件的网格.如果你有这么多,你需要一个滚动条,它稍微有点困难(这个网站上有一些例子可以做到这一点),但只是为了创建一个小的网格,它非常简单.
这是一个包含一些输入验证的示例:
import tkinter as tk
class SimpleTableInput(tk.Frame):
def __init__(self, parent, rows, columns):
tk.Frame.__init__(self, parent)
self._entry = {}
self.rows = rows
self.columns = columns
# register a command to use for validation
vcmd = (self.register(self._validate), "%P")
# create the table of widgets
for row in range(self.rows):
for column in range(self.columns):
index = (row, column)
e = tk.Entry(self, validate="key", validatecommand=vcmd)
e.grid(row=row, column=column, stick="nsew")
self._entry[index] = e
# adjust column weights so they all expand equally
for column in range(self.columns):
self.grid_columnconfigure(column, weight=1)
# designate a final, empty row to fill up any extra space
self.grid_rowconfigure(rows, weight=1)
def get(self):
'''Return a list of lists, containing the data in the table'''
result = []
for row in range(self.rows):
current_row = []
for column in range(self.columns):
index = (row, column)
current_row.append(self._entry[index].get())
result.append(current_row)
return result
def _validate(self, P):
'''Perform input validation.
Allow only an empty value, or a value that can be converted to a float
'''
if P.strip() == "":
return True
try:
f = float(P)
except ValueError:
self.bell()
return False
return True
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.table = SimpleTableInput(self, 3, 4)
self.submit = tk.Button(self, text="Submit", command=self.on_submit)
self.table.pack(side="top", fill="both", expand=True)
self.submit.pack(side="bottom")
def on_submit(self):
print(self.table.get())
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
有关输入验证的更多信息,请参见此处:交互式验证tkinter中的Entry小部件内容
| 归档时间: |
|
| 查看次数: |
8528 次 |
| 最近记录: |