Задать вопрос
  • Как вставить значение в определенную колонну в БД?

    Altry
    @Altry
    cur.execute('UPDATE task SET succes = ? where task_name = ?', (True,  task_name_))
    Ответ написан
    Комментировать
  • Как взаимодействовать с переменной функции в другой функции в одном классе?

    @twistfire92
    Python backend developer
    Попробуйте эту строку
    self.text_show = tk.Text(self.dialog_frame,width=40, height=24)

    Перенести в функцию __init__()

    У вас follow_2 вызывается раньше, чем вызывается init_main() а text_show определяется только в ней.
    можно просто init_main() перенести выше на 2 строки.
    Ответ написан
    1 комментарий
  • Как показывать изменение текстовом документе через Text?

    Вы можете настроить прокси для виджета, и в этом прокси вы сможете определять, когда что-либо было вставлено или удалено. Вы можете использовать эту информацию для создания виртуального события, которое может быть связано с любым другим событием.

    Начнем с создания собственного класса текстового виджета, который вы будете использовать, как и любой другой текстовый виджет:
    import Tkinter as tk
    
    class CustomText(tk.Text):
        def __init__(self, *args, **kwargs):
            """A text widget that report on internal widget commands"""
            tk.Text.__init__(self, *args, **kwargs)
    
            # create a proxy for the underlying widget
            self._orig = self._w + "_orig"
            self.tk.call("rename", self._w, self._orig)
            self.tk.createcommand(self._w, self._proxy)
    
        def _proxy(self, command, *args):
            cmd = (self._orig, command) + args
            result = self.tk.call(cmd)
    
            if command in ("insert", "delete", "replace"):
                self.event_generate("<<TextModified>>")
    
            return result


    Прокси-сервер в этом примере выполняет три функции:

    1. Сначала он вызывает фактическую команду виджета, передавая все полученные аргументы.
    2. Затем он генерирует событие для каждой вставки и каждого удаления.
    3. Затем он генерирует виртуальное событие
    4. И, наконец, он возвращает результаты фактической команды виджета.

    Вы можете использовать этот виджет точно так же, как любой другой текстовый виджет, с дополнительным преимуществом, которое вы можете привязать к <>.

    Например, если вы хотите отобразить количество символов в текстовом виджете, вы можете сделать что-то вроде этого:
    root = tk.Tk()
    label = tk.Label(root, anchor="w")
    text = CustomText(root, width=40, height=4)
    
    label.pack(side="bottom", fill="x")
    text.pack(side="top", fill="both", expand=True)
    
    def onModification(event):
        chars = len(event.widget.get("1.0", "end-1c"))
        label.configure(text="%s chars" % chars)
    
    text.bind("<<TextModified>>", onModification)
    
    root.mainloop()


    И Вам останеться просто прикрутить это всё на обычном взаимодействии с файлом "text.txt"
    Ответ написан
    Комментировать
  • Как выводить результат функции в окне, параллельно ее работе?

    @Alexa2007
    Необходимо передавать объект окна в класс, а дальше в методах писать о процессе выполнения
    from tkinter import *
    from time import sleep
    
    
    class Myfunctions(object):
        def __init__(self, window):
            self.window = window
    
        def send_email(self):
            self.window.title('Sending message..')
            sleep(2)
            self.window.title('OK')
    
        def send_email_with_error(self):
            try:
                10/0
            except Exception as e:
                self.window.title('Error sending: '+ str(e))
    
            
    window = Tk() 
    
    helper = Myfunctions(window)
    def on():
        helper.send_email()
    def off():
        helper.send_email_with_error()
    
    
    on_btn = Button(window,text='on', height=1, width=20, command=lambda:on()).pack()
    off_btn = Button(window,text='off', height=1, width=20, command=lambda:off()).pack()
    
    window.geometry('400x50')
    window.resizable(width=False, height=False)
    
    window.mainloop()
    Ответ написан
    Комментировать
  • Как заработать школьнику на программировании?

    Будем честны друг с другом, не каждый опытный программер может реально зарабатывать фрилансом.
    На питоне заказов мало. В России фриланс это в 30% кидалово, в 50% мозгоебство на уровне профи.
    Тебе это надо? Чтобы за половину от реальной зарплаты джуна тебе все мозги выносили?

    Будь я сейчас в школе я бы занялся тремя вещами:
    1. Спорт
    2. Девушки
    3. Подготовка в нормальный вуз(берлинский технический например).

    От того что ты будешь зарабатывать 10 - 20 тысяч в твоей жизни ничего не изменится. Я думал что закончу универ, буду получать зп 20 и всё будет в шоколаде. Я получаю сейчас примерно в 2 раза больше моих хотелок. За год устал пропивать их, уже купил все ништяки что хотел. На что-то большее не хватит, квартиру и авто купить хорошую нужно или годами так же сидеть и себя ущемлять, либо получать зп в разы больше.

    В итоге отрывайся и учись, забудь о работе. Я тоже так думал в 15, сайты клепал, языки учил. Толку вышло конечно больше чем у окружающих, но вот в 25 нихера себя счастливым и обеспеченным не чувствую. От того насколько много ты получаешь или какие ты купил ништяки, счастье надолго не прибавляется.

    Сорян если огорчаю.

    Но программирование и электроника это реально профессии будущего, которые даже в РФ будут нормально получать.

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

    Я вот в школе когда был напросился ходить в универ на интересные лекции . Учился потихоньку, сверстники смотрели как на сумашедшего=))))
    Ответ написан
    1 комментарий
  • Какой Framework использовать для сетевого программирования?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Если нужен фреймворк с низкоуровневыми возможностями, не только http, то Twisted - это как раз правильный выбор.
    Ответ написан
    2 комментария
  • Как использовать взятый с tk.Text текст в добавлении в БД?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Так вроде работает:
    Код
    import tkinter as tk
    import sqlite3
    from tkinter import ttk
    
    
    class Main(tk.Frame):
        def __init__(self, root):
            super().__init__(root)
            self.db = db
            self.init_main()
    
        def init_main(self):
            lbl_main = tk.Label(text='TXT', fg='#336B87', font=('Modern', 220), bg='#2A3132')
            btn_database_workers = tk.Button(padx=7, pady=2, text='', bg='#336B87',
                                             activebackground='#336B87',
                                             compound=tk.TOP, font=('Ubuntu', 72), bd=10, command=self.open_database)
            lbl_main.pack()
            btn_database_workers.pack()
    
            lbl_main.place(x=5, y=-45)
            btn_database_workers.place(x=750, y=45)
    
        def open_database(self):
            Child()
    
    
    class Child(tk.Toplevel):
        def __init__(self):
            super().__init__(root)
            self.init_child()
            self.db = db
            self.db.cur = self.db.conn.cursor()
            self.view = app
            self.view_records()
    
        def retrieve_input(self):
            entry1_text = self.entry1.get(1.0, tk.END)
            entry2_text = self.entry2.get(1.0, tk.END)
            self.records(entry1_text, entry2_text)
    
        def init_child(self):
            self.title('Child')
            self.geometry('950x400')
            self['bg'] = '#2A3132'
            self.resizable(False, False)
    
            self.entry1 = tk.Text(self, height=2, width=11, font=('Ubuntu', 15), bd=5)
            self.entry1.pack()
            self.entry1.place(x=3, y=180)
    
            self.entry2 = tk.Text(self, height=2, width=11, font=('Ubuntu', 15), bd=5)
            self.entry2.pack()
            self.entry2.place(x=3, y=245)
    
            self.tree = ttk.Treeview(self, column=('clm1', 'clm2', 'clm3'), show='headings')
            self.tree.heading('#1', text='ID')
            self.tree.heading('#2', text='Name')
            self.tree.heading('#3', text='IP')
            self.tree.pack()
    
            delete_btn = tk.Button(self, text='Delete', padx=25, pady=10, font=('Ubuntu', 15),
                                   bd=8, bg='#336B87', command=self.delete_records)
            delete_btn.pack()
            delete_btn.place(x=0, y=0)
    
            add_btn = tk.Button(self, text='Add', padx=36, pady=10, font=('Ubuntu', 15), bd=8, bg='#336B87',
                                command=lambda: self.retrieve_input())
            add_btn.pack()
            add_btn.place(x=0, y=75)
    
        def records(self, name, ip):
            self.db.insert_data(str(name), str(ip))
            self.view_records()
    
        def view_records(self):
            self.db.cur.execute('''SELECT * FROM tbl''')
            [self.tree.delete(i) for i in self.tree.get_children()]
            [self.tree.insert('', 'end', values=row) for row in self.db.cur.fetchall()]
    
        def delete_records(self):
            for selection_item in self.tree.selection():
                self.db.cur.execute('''DELETE FROM tbl WHERE id=?''', (self.tree.set(selection_item, '#1'),))
            self.db.conn.commit()
            self.view_records()
    
    
    class DB:
        def __init__(self):
            self.conn = sqlite3.connect('oop_test.db')
            self.cur = self.conn.cursor()
            self.cur.execute(
                '''CREATE TABLE IF NOT EXISTS tbl(id INTEGER PRIMARY KEY,name TEXT ,ip TEXT)''')
            self.conn.commit()
    
        def insert_data(self, name, ip):
            self.cur.execute('''INSERT INTO tbl(name, ip) VALUES (?, ?)''', (name, ip))
            self.conn.commit()
    
    
    if __name__ == '__main__':
        root = tk.Tk()
        db = DB()
        app = Main(root)
        app.pack()
        x = root.winfo_screenwidth()
        y = root.winfo_screenheight()
        root.geometry('{}x{}'.format(int(x * 0.8), int(y * 0.8)))
        root['bg'] = '#2A3132'
        root.title('Main')
        root.state('zoomed')
        root.mainloop()
    Ответ написан
    1 комментарий
  • Как сохранять виджеты и после закрытия программы в kivy python?

    Hcuy
    @Hcuy
    Профессионально считаю ворон.
    Не хотите посмотреть в сторону json? Ну или же просто хранить данные на сервере.
    Ответ написан
    2 комментария