Ввод числа

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
здравствуйте, может кто из калькулятора, нашёл его на просторах))
переделать в форму для ввода числа, чтобы кнопки были в два столбца, последняя кнопка чтобы была по ширине двух столбцов
'Clear', 'DEL',
'1', '2',
'3', '4',
'5', '6',
'7', '8',
'9', '0',
'======'
и при нажатии ====== возвращалось, то что ввели, ну и выбросить лишнее, спасибо, код:
Код:
from tkinter import *


class Main(Frame):
    def __init__(self, root):
        super(Main, self).__init__(root)
        self.build()

    def build(self):
        self.formula = '0'
        self.lbl = Label(text=self.formula, font=('Times New Roman', 21, 'bold'), bg='#000', foreground='#FFF')
        self.lbl.place(x=11, y=50)

        btns = [
            'Clear', 'DEL',
            '1', '2',
            '3', '4',
            '5', '6',
            '7', '8',
            '9', '0',
            '======']

        x = 10
        y = 140
        for bt in btns:
            com = lambda x=bt: self.logicalc(x)
            Button(text=bt, bg='#FFF',
                   font=('Times New Roman', 15),
                   command=com).place(x=x, y=y,
                                      width=115,
                                      height=79)
            x += 117
            if x > 400:
                x = 10
                y += 81

    def logicalc(self, operation):
        if operation == 'Clear':
            self.formula = ''
        elif operation == 'DEL':
            self.formula = self.formula[0:-1]
        elif operation == '======':
            self.formula = root.destroy()
        else:
            if self.formula == '0':
                self.formula = ''
            self.formula += operation
        self.update()

    def update(self):
        if self.formula == '':
            self.formula = '0'
        self.lbl.configure(text=self.formula)


if __name__ == '__main__':
    root = Tk()
    root['bg'] = '#000'
    root.geometry('485x550+200+200')
    root.title('Введите число и нажмите ======')
    root.resizable(False, False)
    app = Main(root)
    app.pack()
    root.mainloop()
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
при нажатии ====== возвращалось, то что ввели
Как я понял вам нужно чтобы после нажатия на кнопку ====== форма уничтожалась и результат можно было получить из другого файла, в который импортирован модуль с формой. Если так, то вот пример:
Python:
# файл (file.py), в который импортирован модуль с формой (form.py)
from form import Main


m = Main()
print("Число из формы:", m.result)
Python:
# сам модуль (form.py)
import tkinter as tk


class Main():
    def __init__(self):
        self.root = tk.Tk()
        self.root['bg'] = '#000'
        self.root.geometry('300x700+200+200')
        self.root.title('Введите число и нажмите ======')
        self.root.resizable(False, False)
        self.result = ''
        self.build()
        self.root.mainloop()

    def build(self):
        self.var = tk.StringVar(self.root)
        self.var.set('0')
        self.lbl = tk.Label(textvariable=self.var,
                            font=('Times New Roman', 21, 'bold'),
                            bg='#000', foreground='#FFF')
        self.lbl.place(x=11, y=50)

        btns = ['Clear', 'DEL', '1', '2', '3', '4',
                '5', '6', '7', '8', '9', '0', '======']

        x = 35
        y = 120
        for bt in btns:
            w = 115
            if bt == '======':
                w = 232
            com = lambda x=bt: self.logicalc(x)
            tk.Button(self.root, text=bt, bg='#FFF',
                      font=('Times New Roman', 15),
                      command=com).place(x=x, y=y, width=w, height=79)
            x += 117
            if x > 200:
                x = 35
                y += 81

    def logicalc(self, operation):
        if operation == 'Clear':
            self.var.set('')
        elif operation == 'DEL':
            self.var.set(self.var.get()[:-1])
        elif operation == '======':
            self.result = self.var.get()
            self.root.destroy()
        else:
            if self.var.get() == '0':
                self.var.set('')
            self.var.set(f"{self.var.get()}{operation}")
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
спасибо, то, что нужно, подскажите, а в Питоне в tkinter или другом GUI есть инструмент для лёгкого превращения форм в html? поверхностно знаком с тремя библиотеками в Питоне для графического интерфейса: Tkinter, wxPython и PyQT
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
подскажите, а в Питоне в tkinter или другом GUI есть инструмент для лёгкого превращения форм в html?
Если нужно показывать html внутри gui, то есть cefpython (он поддерживает Tkinter, wxPython и PyQT и другие gui). Если нужно отображать форму из gui в браузере (в виде html) можно попробовать PySimpleGUIWeb.
 

Форум IT Специалистов