Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2020 19:25:03

D1MoK
Зарегистрирован: 2020-12-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с проектом

Здравствуйте, делаю проект по физике и нужно сделать приложение по типу сайта решу ЕГЭ, вот начинаю делать, сделал интерфейс и правильный ответ в задаче 53, однако когда нажимаешь на кнопку (btn) текст (lbl3) должен меняться на “Всё правильно!” однако вместо этого выводит “Не правильно”, проверил выводит ли он вообще то что я ввожу (txt1), и когда я прописал (раньше вместо того что на фото было: вместо txt1 в 8 и 11 строка раньше стояло res(8 строка) и Tu(11 строка) то что написано в фото у меня вывелось Entry, хотя в другой проге число у меня выводилось, но здесь не хочет, в чём ошибка?

Прикреплённый файлы:
attachment PSX_20201212_232423.jpg (642,7 KБ)

Офлайн

#2 Дек. 12, 2020 23:11:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите с проектом

D1MoK
однако когда нажимаешь на кнопку (btn)
А что там происходит при нажатии на кнопку? Ты сам не видишь, что ты картинку даже выложил лишь частично?
Скопируй код в буфер и отправь его сюда как текст.



Офлайн

#3 Дек. 13, 2020 05:34:08

D1MoK
Зарегистрирован: 2020-12-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с проектом

py.user.next
я знаю, что, я фото выложил частично, полностью она отправляться не хотелась, т. к. она слишком большая, ладно щас пришлю так код, просто тогда не было времени скопировать

Офлайн

#4 Дек. 13, 2020 05:43:13

D1MoK
Зарегистрирован: 2020-12-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с проектом

py.user.next
from tkinter import *
Tu = 0
n = 53
def clicked():
otvet = (' ‘)
if txt1 == n:
res = “Всё правильно {}”.format()
lbl3.configure(text = res)
else:
Tu = (’Не правильно{}'.format(otvet))
lbl3.configure(text=Tu)
window = Tk()
window.title('Электрические явления')
window.geometry('800x600')
lbl1 = Label(window, text = ‘Электродвигатель подъёмного крана работает под напряжением 380 В, при этом сила тока в обмотке равна 10 А. Кран поднимает груз массой 1 т на’, font = (“Arial Bold”, 8))
lbl1.grid(column = 0, row = 0)
lbl2 = Label(window, text = ‘высоту 18 м за 1,5 минуты. Чему равен КПД крана? Ответ округлите до целых и пишите его без знака % либо же дробью, тогда округлить до сотых.’, font = (“Arial Bold”, 8))
lbl2.grid(column = 0, row = 1)
lbl3 = Label(window, text = ‘нажми на кнопку’, font = (“Arial Bold”, 8))
lbl3.grid(column = 0, row = 4)
txt1 = Entry(window, width = 5)
txt1.grid(column = 0, row = 2)
btn = Button(window, text = ‘проверить ответ’, font = (“Arial Bold”, 8), command = clicked)
btn.grid(column = 0, row = 3)
window.mailoop()

Офлайн

#5 Дек. 13, 2020 06:07:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите с проектом

D1MoK
хотя в другой проге число у меня выводилось, но здесь не хочет, в чём ошибка?
Да там вообще много всяких ошибок у тебя. Поразительно, что эта программа вообще запустилась.

Что к меткам, что к полям ввода надо привязывать StringVar, а потом у неё брать значение или устанавливать ей значение через методы get() и set().

В txt1 находится не текст, а объект класса Entry(). А в переменной n находится не текст, а число 53.

Так что посмотри какие-нибудь коды в Интернете по tkinter, прежде чем писать что-то, чтобы хотя бы элементарных ошибок не делать.



Офлайн

#6 Дек. 13, 2020 06:16:02

D1MoK
Зарегистрирован: 2020-12-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#7 Дек. 13, 2020 18:37:30

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Помогите с проектом

https://younglinux.info/tkinter/tkinter.php



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#8 Дек. 13, 2020 22:27:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Помогите с проектом

Небольшой пример, в котором переменная привязана к полю ввода

  
>>> from tkinter import Tk, StringVar, Entry, Button, messagebox
>>> 
>>> def f():
...     root = Tk()
...     root.title('Эксперимент')
...     root.geometry('300x70+500+500')
...     entry_var = StringVar()
...     entry = Entry(root, textvariable=entry_var)
...     entry.pack()
...     button = Button(root, text='Нажми', command=lambda: b(entry_var))
...     button.pack()
...     root.mainloop()
... 
>>> def b(var):
...     text = var.get()
...     if len(text) < 10:
...         message_text = text.center(50)
...     else:
...         message_text = text
...     messagebox.showinfo('Ты ввёл в поле строку', message_text)
...     print(text)
... 
>>> f()
abc
Какое-то длинное предложение.
>>>



Офлайн

#9 Дек. 14, 2020 10:11:51

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Помогите с проектом

D1MoK валялось тут у меня … не законченое … может быть что сгодится
*.py

 # -*- coding: utf-8 -*-
# bla bla bla
"""
@author: ***
"""
# problems
"""
сделать:
1. сохранение результатов, DataProjectDialog?
2. обработчик результатов, ActProjectDialog?
3. че с кодировкой utf-8? кракозяблы?!
    -- ага ini файл должен быть в кодеровке системы
    (windows cp-1251, linux utf-8) или перекодировать
    в системную кодировку в
    зависимости от используеой системы
"""
# example ini file
"""
[start]
#default path
default_path='/'
#title window
title=test
#text on the button 0
btn_0=  < prev
#text on the button 1
btn_1=  select
#text on the button 2
btn_2=  next >
#first part of the text of a label
label=step
#regular expression for named
re=[a-zA-Zа-яА-Я0-9_-]
# еще ... хз  возожно указать файл | код обработчик ?
[0]
# str, int, float, bin
type=bin
# on|off (0|1) str filter
named=0
#prev, select, next, text
state_default=0100
state_use=0110
# question text
text=select mode (True - one, False - two)
# step to prev
prev=0
# step to next (False, True (1, 2) or Data (1))
next=1,2
# askdirectory, askyesnocancel, askstring, askfloat, askinteger, askopenfile
ask_type=askyesnocancel
ask_title='?'
ask_msg='select mode\nyes - True\nno - False'
[1]
type=str
named=1
state_default=1100
state_use=1110
text=entrer str
prev=0
next=2
ask_type=askstring
ask_title='?'
ask_msg='entrer str'
[2]
type=str
named=0
state_default=1100
state_use=1110
text=select file
prev=0
next=1
ask_type=askopenfile
ask_title='?'
ask_msg='file'
"""
# code
import tkinter as tk
from tkinter import scrolledtext
from tkinter.messagebox import askyesnocancel
from tkinter.simpledialog import askstring
from tkinter.simpledialog import askfloat
from tkinter.simpledialog import askinteger
from tkinter.filedialog import askdirectory
from tkinter.filedialog import askopenfile
import time
import configparser
import re
class MasterProjectDialog:
    # giu, ini
    def __init__(self, ini=r''):
        self.step_count = 0
        #---
        self.ini = ini
        self.config = configparser.ConfigParser()
        self.config.read(self.ini)
        self.title = self.config.get('start', 'title')
        self.btn_0 = self.config.get('start', 'btn_0')
        self.btn_1 = self.config.get('start', 'btn_1')
        self.btn_2 = self.config.get('start', 'btn_2')
        self.label = self.config.get('start', 'label')
        self.path = self.config.get('start', 'default_path')
        self.re = self.config.get('start', 're')
        #---
        self.root = tk.Tk()
        self.root.resizable(width=False, height=False)
        self.root.title(self.title)
        #---
        self.t_str = tk.StringVar(master=self.root)
        #---
        self.f = tk.Frame(master=self.root, height=300, width=400)
        self.f.grid(column=0, row=0)
        self.f.pack_propagate(True)
        self.f.pack()
        #---
        self.l = tk.Label(master=self.f)
        self.l.grid(sticky='w', column=0, row=0)
        self.l.pack_propagate(True)
        #---
        self.t = scrolledtext.ScrolledText( master=self.f, wrap = tk.WORD)
        self.t.grid(column=0, row=1)
        self.t.pack_propagate(True)
        self.t.configure(state='disabled')
        #---
        self.b0 = tk.Button(
            master=self.f, text=self.btn_0, command=self.b0_cmd)
        self.b0.grid(sticky='w', column=0, row=2)
        self.b0.configure(state='disabled')
        self.b0.pack_propagate(True)
        #---
        self.b1 = tk.Button(
            master=self.f, text=self.btn_1, command=self.b1_cmd)
        self.b1.grid(column=0, row=2)
        self.b1.pack_propagate(True)
        #---
        self.b2 = tk.Button(
            master=self.f, text=self.btn_2, command=self.b2_cmd)
        self.b2.grid(sticky='e' , column=0, row=2)
        self.b2.pack_propagate(True)
        #---
        self.result = None
        self.results = {}
        self.b012 = [0, 0, 0]
        self._state()
        self._update_gui()
    def b0_cmd(self):
        self.b012 = [1, 0, 0]
        self.runner()
        self._state()
    def b1_cmd(self):
        self.b012 = [0, 1, 0]
        self.runner()
    def b2_cmd(self):
        self.b012 = [0, 0, 1]
        self.runner()
        self._state()
    def _update_gui(self):
        txt = '\n'.join([self.config.get(
            str(self.step_count), "text"), str(self.result)])
        self.t.configure(state='normal')
        self.t.delete('1.0', tk.END)
        self.t.insert(tk.INSERT, txt)
        self.t.configure(state='disabled')
        self.root.after(250, self._update_gui)
    def _named(self, name):
        t = re.compile(self.re)
        return "".join([ch for ch in name if t.match(ch)])
    def runner(self):
        #--- b0_cmd
        if self.b012.index(1) == 0:
           self._btn0run()
        #--- b1_cmd
        elif self.b012.index(1) == 1:
            self._btn1run()
            #-check-----------------------------------------------------------
            self.check()
            #-----------------------------------------------------------------
        #--- b2_cmd
        elif self.b012.index(1) == 2:
            self._btn2run()
    def _btn0run(self):
        self.step_count = int(self.config.get(
                    str(self.step_count), "prev"))
    def _btn1run(self):
        cmd = self.config.get(str(self.step_count), "ask_type")
        title = self.config.get(str(self.step_count), "ask_title")
        msg = self.config.get(str(self.step_count), "ask_msg")
        if cmd == 'askdirectory' or cmd == 'askopenfile':
            self.result = eval(
                f'{cmd}(initialdir={self.path}, title={title})')
            if cmd == 'askopenfile':
                try:
                    self.result = self.result.name
                except AttributeError:
                    self.result = None
        else:
            self.result = eval(f'{cmd}({title}, {msg})')
        if self.config.get(str(self.step_count), "type") == 'str':
            if int(self.config.get(str(self.step_count), "named")):
                try:
                    self.result = self._named(self.result)
                except TypeError:
                    self.result = None
            if self.result == '':
                self.result = None
        self._pre()
    def _btn2run(self):
        if self.config.get(str(self.step_count), "type") == 'bin':
            nexts = self.config.get(
                str(self.step_count), "next").split(',')
            if self.result:
                self.step_count = nexts[0]
            else:
                self.step_count = nexts[1]
        else:
            self.step_count = int(self.config.get(
                str(self.step_count), "next"))
    def _state(self):
        self.l['text'] = f"{self.label} {self.step_count}"
        self.b012 = [0, 0, 0]
        self.b0.configure(state='normal' if int(list(self.config.get(str(
            self.step_count), "state_default"))[0]) else 'disabled')
        self.b1.configure(state='normal' if int(list(self.config.get(str(
            self.step_count), "state_default"))[1]) else 'disabled')
        self.b2.configure(state='normal' if int(list(self.config.get(str(
            self.step_count), "state_default"))[2]) else 'disabled')
        self.result = None
    def _pre(self):
        if self.result != None:
            self.b0.configure(state='normal' if int(list(
                self.config.get( str(
                    self.step_count), "state_use"))[0]
                ) else 'disabled')
            self.b1.configure(state='normal' if int(list(
                self.config.get(str(
                    self.step_count), "state_use"))[1]
                ) else 'disabled')
            self.b2.configure(state='normal' if int(
                list(self.config.get(str(
                    self.step_count), "state_use"))[2]
                   ) else 'disabled')
        else:
            self._state()
    #-check-------------------------------------------------------------------
    def check(self):
        DataProjectDialog.data.append(DataProjectDialog.test)
        DataProjectDialog.test += 1
        DataProjectDialog().get_data()
        ActProjectDialog().act_this(DataProjectDialog.data)
    #-------------------------------------------------------------------------
#-to-make---------------------------------------------------------------------
class DataProjectDialog: # check
    # save
    data = []
    test = 0
    def get_data(cls):
        print('data', cls.data)
class ActProjectDialog: # check
    # actions
    def act_this(cls, xz):
        print('act ', xz)
#-----------------------------------------------------------------------------
class D1MoK(MasterProjectDialog):
    # наследуем MasterProjectDialog и певеопредеяем действие кнопки prev
    def __init__(self, ini=r''):
        super().__init__(ini)
    def b0_cmd(self):
        if self.result == '1':
            tk.messagebox.showinfo(f'ответ {self.step_count}', 'правильно')
        else:
            tk.messagebox.showinfo(f'ответ {self.step_count}', 'не правильно')
def main(ini):
    #MasterProjectDialog(ini).root.mainloop()
    D1MoK(ini).root.mainloop()
if __name__ == "__main__":
    main('prttp2.ini')
*.ini
 [start]
default_path='/'
title=test
btn_0=  < prev  
btn_1=  select  
btn_2=  next >  
label=step
re=[a-zA-Zа-яА-Я0-9,._-]
[0]
type=str
named=0
state_default=1100
state_use=1110
text=Электродвигатель подъёмного крана работает под напряжением 380 В, при этом сила тока в обмотке равна 10 А. Кран поднимает груз массой 1 т на высоту 18 м за 1,5 минуты. Чему равен КПД крана? Ответ округлите до целых и пишите его без знака %% либо же дробью, тогда округлить до сотых.
prev=0
next=1
ask_type=askstring
ask_title='?'
ask_msg='ваш ответ'

ps эээа …
1. смешивать разноязычные коментарии не очень
2. жирные методы типа MasterProjectDialog().runner() … ну такое
3. MasterProjectDialog().check() просто демонстрация работы с классами DataProjectDialog, ActProjectDialog которые в общем то не более чем тестовые
4. хз … может еще че
upd небольшие косметические иземения



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Дек. 14, 2020 13:15:24)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version