• Как выводить результат функции в окне, параллельно ее работе?

    @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()
    Ответ написан
  • Как заработать школьнику на программировании?

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

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

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

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

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

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

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

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Если нужен фреймворк с низкоуровневыми возможностями, не только http, то Twisted - это как раз правильный выбор.
    Ответ написан
  • Как использовать взятый с 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()
    Ответ написан
  • Как сохранять виджеты и после закрытия программы в kivy python?

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