Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import psycopg2 # импорт библиотек
- conn = psycopg2.connect(dbname = "bu_base", user = "postgres", password = "1", host = "localhost", port = '5432') # подключение к базе данных в PostgreSQL
- cursor = conn.cursor()
- cursor.execute("SELECT kontakti.id_klienta FROM bu_base.public.kontakti") # выбор всех строчек из поля "id_klienta"
- id_klienta = cursor.fetchall()
- cursor.execute("SELECT kontakti.nazvanie FROM bu_base.public.kontakti")# выбор всех строчек из поля "nazvanie"
- nazvanie = cursor.fetchall()
- cursor.execute("SELECT kontakti.kontaktnoe_litso FROM bu_base.public.kontakti")# выбор всех строчек из поля "kontaktnoe_litso"
- kontaktnoe_litso = cursor.fetchall()
- cursor.execute("SELECT kontakti.telefon FROM bu_base.public.kontakti")# выбор всех строчек из поля "telefon"
- telefon = cursor.fetchall()
- cursor.execute("SELECT kontakti.adres FROM bu_base.public.kontakti")# выбор всех строчек из поля "adres"
- adres = cursor.fetchall()
- root = Tk()
- # Cоздание функции, которая будет рисовать внешний интерфейс для работы с конкретной таблицей.
- def Formi():
- text_from_entry_0 = entry_0.get()
- number_of_string=int(text_from_entry_0) # Считывание информации из поля и преобразование в целочисленный тип.
- entry_1 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_1 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'id_klienta', font = 'Candara 14', fg = 'black')
- entry_1.insert(END, id_klienta[number_of_string])
- entry_2 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_2 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Nazvanie', font = 'Candara 14', fg = 'black')
- entry_2.insert(END, nazvanie[number_of_string])
- entry_3 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_3 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Kontaktnoe_litso', font = 'Candara 14', fg = 'black')
- entry_3.insert(END, kontaktnoe_litso[number_of_string])
- entry_4 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_4 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Telefon', ont = 'Candara 14', fg = 'black')
- entry_4.insert(END, telefon[number_of_string])
- entry_5 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_5 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Adres', font = 'Candara 14', fg = 'black')
- entry_5.insert(END, adres[number_of_string])
- # ^ Создание текста и полей для ввода со внесёнными значениями из базы данных.
- but_1 = Button(frame_1, bg = 'white', fg = 'black')
- but_1["text"] = "Следующая запись"
- but_2 = Button(frame_1, bg = 'white', fg = 'black')
- but_2["text"] = "Отмена"
- but_3 = Button(frame_1, bg = 'white', fg = 'black')
- but_3["text"] = "Сохранить"
- # Кнопки "Следующая запись", "Отмена" и "Сохранить" соответственно.
- label_1.pack()
- entry_1.pack()
- label_2.pack()
- entry_2.pack()
- label_3.pack()
- entry_3.pack()
- label_4.pack()
- entry_4.pack()
- label_5.pack()
- entry_5.pack()
- # Упаковка всех виджетов, кроме кнопок.
- but_1.place(x = 50, y = 370)
- but_2.place(x = 200, y = 370)
- but_3.place(x = 280, y = 370)
- # Упаковка кнопок с выбранными координатами.
- frame_1 = Frame(root, bg = 'white', bd = 150) # Создание фрейма.
- entry_0 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_0 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Введите номер записи: ', font = 'Candara 14', fg = 'black')
- # Текст и поле для ввода номера записи.
- but_0 = Button(frame_1, bg = 'white', fg = 'black')
- but_0["text"] = "Продолжить" # Создание кнопки "Продолжить".
- but_0.bind('<Button-1>', Formi) # Вызов функции "Formi".
- frame_1.pack()
- label_0.pack()
- entry_0.pack()
- but_0.pack()
- # Упаковка всех виджетов.
- root.mainloop()
- def Schitivanie():
- text_from_entry_0 = entry_0.get()
- number_of_string=int(text_from_entry_0)
- return number_of_string
- def Next():
- number_of_string += 1
- return number_of_string
- but_0.bind('<Button-1>', Schitivanie)
- but_0.bind('<Button-1>', Formi)
- but_1.bind('<Button-1>', Next)
- bur_1.bind('<Button-1>', Formi)
- Exception in Tkinter callback
- Traceback (most recent call last):
- File "C:UsersritadAppDataLocalProgramsPythonPython35-32libtkinter__init__.py", line 1550, in __call__
- return self.func(*args)
- TypeError: Formi() missing 1 required positional argument: 'number_of_string'
- from tkinter import *
- import psycopg2
- def Schitivanie(entry_0):
- text_from_entry_0 = entry_0.get()
- numb_of_string=int(text_from_entry_0)
- return numb_of_string
- number_of_string = Schitivanie()
- def Formi(number_of_string):
- entry_1 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_1 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'id_klienta', font = 'Candara 14', fg = 'black', )
- entry_1.insert(END, id_klienta[number_of_string])
- entry_2 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_2 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Nazvanie', font = 'Candara 14', fg = 'black')
- entry_2.insert(END, nazvanie[number_of_string])
- entry_3 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_3 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Kontaktnoe_litso', font = 'Candara 14', fg = 'black')
- entry_3.insert(END, kontaktnoe_litso[number_of_string])
- entry_4 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_4 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Telefon', font = 'Candara 14', fg = 'black')
- entry_4.insert(END, telefon[number_of_string])
- entry_5 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_5 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Adres', font = 'Candara 14', fg = 'black')
- entry_5.insert(END, adres[number_of_string])
- but_1 = Button(frame_1, bg = 'white', fg = 'black')
- but_1["text"] = "Следующая запись"
- but_2 = Button(frame_1, bg = 'white', fg = 'black')
- but_2["text"] = "Отмена"
- but_3 = Button(frame_1, bg = 'white', fg = 'black')
- but_3["text"] = "Сохранить"
- label_1.pack()
- entry_1.pack()
- label_2.pack()
- entry_2.pack()
- label_3.pack()
- entry_3.pack()
- label_4.pack()
- entry_4.pack()
- label_5.pack()
- entry_5.pack()
- but_1.place(x = 50, y = 390)
- but_2.place(x = 200, y = 390)
- but_3.place(x = 280, y = 390)
- but_1.bind('<Button-1>', Next)
- but_1.bind('<Button-1>', Formi)
- but_2.bind('<Button-1>', Cancel)
- but_3.bind('<Button-1>', Save)
- def Next(number_of_string):
- number_of_string += 1
- return number_of_string
- number_of_string = Next()
- conn = psycopg2.connect(dbname = "bu_base", user = "postgres", password = "1", host = "localhost", port = '5432')
- cursor = conn.cursor()
- cursor.execute("SELECT kontakti.id_klienta FROM bu_base.public.kontakti")
- id_klienta = cursor.fetchall()
- cursor.execute("SELECT kontakti.nazvanie FROM bu_base.public.kontakti")
- nazvanie = cursor.fetchall()
- cursor.execute("SELECT kontakti.kontaktnoe_litso FROM bu_base.public.kontakti")
- kontaktnoe_litso = cursor.fetchall()
- cursor.execute("SELECT kontakti.telefon FROM bu_base.public.kontakti")
- telefon = cursor.fetchall()
- cursor.execute("SELECT kontakti.adres FROM bu_base.public.kontakti")
- adres = cursor.fetchall()
- root = Tk()
- frame_1 = Frame(root, bg = 'white', bd = 150)
- entry_0 = Entry(frame_1, width = 40, bd = 4, bg = 'white')
- label_0 = Label(frame_1, width = 40, bd = 4, bg = 'white', text = 'Введите номер записи: ', font = 'Candara 14', fg = 'black', )
- but_0 = Button(frame_1, bg = 'white', fg = 'black')
- but_0["text"] = "Продолжить"
- but_0.bind('<Button-1>', Schitivanie)
- but_0.bind('<Button-1>', Formi)
- frame_1.pack()
- label_0.pack()
- entry_0.pack()
- but_0.pack()
- root.mainloop()
- Traceback (most recent call last):
- File "C:UsersritadDownloadsГрафический интерфейс к контактам(2).py", line 10, in <module>
- number_of_string = Schitivanie()
- TypeError: Schitivanie() missing 1 required positional argument: 'entry_0'
- # Сначала идут функции. Т.к. это функции-обработчики, то они должны принимать event
- def Schitivanie(event):
- # глобальные переменные, которые функция меняет, должны быть объявлены как глобальные,
- # иначе функция просто создаст локальную переменную с тем же именем
- # и ее значение останется внутри функции
- global number_of_string
- text_from_entry_0 = entry_0.get()
- number_of_string = int(text_from_entry_0)
- def Formi(event):
- # насколько я вижу, тут ничего не нужно объявлять, как глобальные переменные
- ...
- def Next(event):
- global number_of_string
- number_of_string += 1
- # По идее эта функция также должна менять текст в поле entry_0, но могу ошибаться
- # Дальше идет большой блок обращения к базе данных, вообще лучше его вынести в отдельную функцию
- ...
- root = Tk()
- frame_1 = Frame(root, bg = 'white', bd = 150)
- number_of_string = 0 # Просто обнуляем значение (или присваиваем какое-то начальное значение)
- # Изменение текста в entry делается через создание отдельной переменной Tkinter
- entry_0_text = StringVar()
- entry_0 = Entry(frame_1, width = 40, bd = 4, bg = 'white', textvariable=entry_0_text)
- entry_0_text.set(str(number_of_string))
- # Остальной код
- ...
- import tkinter as tk
- # Тут идут функции и классы, не относящиеся к интерфейсу
- # Главный класс приложения
- class App(tk.Tk):
- def __init__(self, parent):
- # Нужно запустить функцию инициализации родительского класса
- super().__init__()
- # Тут идет создание и размещение всех элементов управления
- frame = tk.Frame(parent)
- frame.pack()
- self.entry_0 = tk.Entry(frame)
- self.entry_0.pack()
- self.number_of_string = 0
- bt1 = tk.Button(frame, text='Click me')
- bt1.pack()
- bt1.bind('<1>', self.bt1_click)
- def bt1_click(self, event):
- self.number_of_string = int(self.entry_0.get())
- app = App()
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement