Tkinter-从Scrolledtext框中获取文本(使用网格管理)并保存到sqlite3 tabel-python



你能帮我吗?

我想做的事:

我正在尝试创建一个表单,用户可以在其中放置数据,当点击按钮时,它会将所有数据保存到sqlite 3表中

(原来的程序更长,它有很多其他的输入框,所以我只创建了一个较小的输入框

问题是:当我点击按钮时,系统会生成这个错误消息(可能是我的滚动文本出了问题(

Tkinter回调Traceback中的异常(最近一次调用是最后一次(:
文件"C:\Users\sheha\AppData\Local\Programs\Python37\lib\tkinter__init__.py",第1705行,调用return self.func(*args(文件"scrolledtext_test.py",第36行,add_entry_commandbackend.insert(sb1.get((,sb2.get(((类型错误:get((缺少1个必需的位置参数:"index1">

提前感谢

请在这里找到代码:

from tkinter import *
from tkinter import messagebox
import tkinter as tk
import backend
import csv
from backend import write_to_csv
import os
from Send_email_gui import send_email
from backend import check_assignment
from tkinter.scrolledtext import ScrolledText
import tkinter.ttk
import sqlite3
"""
functions for sqllite table creation and insert
"""
def connect():
conn=sqlite3.connect("test.db")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS scrolltext (id INTEGER PRIMARY KEY, sb1_ text, sb2_ text)")
conn.commit()
conn.close()
def insert(sb1_, sb2_):
conn=sqlite3.connect("test.db")
cur=conn.cursor()
cur.execute("INSERT INTO scrolltext VALUES(NULL, ?, ?)", (sb1_, sb2_))
conn.commit()
conn.close()
"""
function for tkinter button
"""
def add_entry_command():
backend.insert(sb1.get(), sb2.get())

def __init__(self, sb1_, sb2_):
self.sb1_=sb1_
self.sb2_=sb2_

root=Tk()
root.title("How to get text from scrolledtex and save into sqlite3")
root.geometry("1366x768")

l22=Label(root, text="BKG Suggestions", wraplength=250)
l22.grid(row=27, column=2, sticky='E')
l23=Label(root, text="YE Suggestions", wraplength=250)
l23.grid(row=27, column=6, sticky='NS')
"""
Entry boxes top
"""
sb1=ScrolledText(root, height=4, width=25)
sb1.grid(row=27, column=4)
sb2=ScrolledText(root, height=4, width=25)
sb2.grid(row=27, column=7)
"""
Button
"""
b1=Button(root, text="Submit to sqlite3", width=12, command=add_entry_command)
b1.grid(row=34, column=4)
root.mainloop()

您应该知道CCD_ 1和CCD_。

tkinter.Text中,如果要获取其中的文本,则应使用.get(1.0,"end")。在scrollText中也是如此。因此add_entry_command的函数应该是:

def add_entry_command():
# After Mr.Bryan's suggestion.
backend.insert(sb1.get("1.0","end-1c"), sb2.get("1.0","end-1c"))

最新更新