Tkinter - получить текст из поля Scrolledtext (с управлением сеткой) и сохранить в таблицу sqlite3 - python 3.5 - windows 10 - PullRequest
0 голосов
/ 29 февраля 2020

Не могли бы вы мне помочь?

Что я пытаюсь сделать:

Я пытаюсь создать форму, в которую пользователь помещает данные, и при нажатии на кнопку она сохраняет все данные в таблицу sqlite 3

(оригинальная программа длиннее, у нее много других полей ввода, поэтому я просто создаю меньший с кодом, который выдает мне сообщение об ошибке)

проблема: когда я нажимаю на кнопку, система генерирует это сообщение об ошибке (вероятно, что-то не так с моим scrolledtext)

Исключение в обратном вызове Tkinter (последний последний вызов):
File " C: \ Users \ sheha \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ tkinter__init __. Py ", строка 1705, в вызов , возврат self.fun c (* args) File" scrolledtext_test.py ", строка 36, в add_entry_command backend.insert (sb1.get (), sb2.get ()) TypeError: 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()

1 Ответ

1 голос
/ 29 февраля 2020

Вы должны знать, что есть много общего между scrollText и tkinter.Text.

В 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...