0
我試圖通過documenation讓我的方式,但我有一個困難時期試圖找到三個具體的東西。文本字段與Tkinter的
- 什麼是文字輸入。
- 如何獲得在文本輸入的文本。
- 如何設置的文本輸入的文本。
基本上我想這樣做,因爲我只是在這個例子中對JavaScript做(這是很簡單):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SmallForm</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>var db = openDatabase('mydb', '1.0', 'temporal database', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE foo (id unique, field1 text, field2 text)');
});
saveData = function(){
db.transaction(function (tx) {
var id = $('input[name=id]').val();
var field1 = $('input[name=field1]').val();
var field2 = $('input[name=field2]').val();
tx.executeSql('insert or replace into foo values (?, ?, ?)', [id , field1, field2]);
});
};
loadData = function(){
db.transaction(function (tx) {
var id = $('input[name=id]').val();
tx.executeSql('select * from foo where id =?', [id],function (tx, results) {
var len = results.rows.length;
if (len != 1){
var text = len > 1? "bad data" : "no data";
$('input[name=field1]').val(text);
$('input[name=field2]').val(text);
}
else {
$('input[name=field1]').val(results.rows.item(0).field1);
$('input[name=field2]').val(results.rows.item(0).field2);
}
});
});
};
</script>
</head>
<body>
<div class="line">ID:<input type="text" name="id" value="Introduce the ID first"><input type="button" onclick="loadData()" value="Load"></div>
<div class="line">Field1:<input type="text" name="field1" value="some field"></div>
<div class="line">Field2:<input type="text" name="field2" value="another field"></div>
<div class="line"><input type="button" onclick="saveData()" value="Save"></div>
</body>
</html>
我無法找到這些文件,以Python和我不明白是怎麼Tcl/Tk文檔映射到Python代碼。我想我應該檢查這些:
但據我所知沒有,要麼是複雜的,我是傻還是我跳過一些信息的重要位。很可能它是所有前者的組合。
謝謝。對不起,如果我做錯了什麼。歡迎所有回覆和反饋。
PD:我一直在努力從@mmgp的代碼,我已經產生這樣的:
import sqlite3, tkinter as tk
def save_data():
insertQuery = 'insert or replace into allData values(%s)'%(','.join(map(lambda x:'?',fields)))
cursor.execute(insertQuery, tuple(map(lambda x: variables[x].get(), fields)))
db.commit()
def load_data():
cursor.execute('select * from allData where %s = ?'%fields[0], [variables[fields[0]].get()])
row = cursor.fetchone()
if row is None:
for f in fields:
variables[f].set("Bad data request")
return
for i in range(len(fields)):
variables[fields[i]].set(row[i])
root = tk.Tk()
root.title('Fielder2013')
fields = ['id', 'field1', 'field2']
variables = {}
buttons = {'Load':load_data, 'Save':save_data}
dfields = {}
for i in range(len(fields)):
e = fields[i]
dfields[e] = (tk.Label(text=e), tk.Entry())
dfields[e][0].grid(row=i, column=0)
dfields[e][1].grid(row=i, column=1)
variables[e] = tk.StringVar()
dfields[e][1]["textvariable"] = variables[e]
i = 0
for e in buttons:
c = buttons[e]
buttons[e] = tk.Button(text=e)
buttons[e]['command'] = c
buttons[e].grid(row = i, column=2)
i+=1
with sqlite3.connect('database.sqlite3') as db:
cursor = db.cursor()
cursor.execute('create table if not exists allData (%s text unique%s)'%(
fields[0], ''.join(map(lambda e: ', %s text'%e, fields[1:]))))
root.mainloop()
db.commit()
的代碼可能不是你所見過的最清晰的代碼,但我的小腦袋試圖掌握一些新的概念。我認爲這可能對某些人有幫助。
謝謝你的回答。我認爲這正是我需要通過學習曲線中的初始步驟來獲得的,現在一切都變得有意義,或者至少有很多事情。我已經在你的代碼工作,並做出我現在增加了初始後的新版本。再次感謝你。 – Trylks