Форум сайта python.su
Здравствуйте, делаю проект по физике и нужно сделать приложение по типу сайта решу ЕГЭ, вот начинаю делать, сделал интерфейс и правильный ответ в задаче 53, однако когда нажимаешь на кнопку (btn) текст (lbl3) должен меняться на “Всё правильно!” однако вместо этого выводит “Не правильно”, проверил выводит ли он вообще то что я ввожу (txt1), и когда я прописал (раньше вместо того что на фото было: вместо txt1 в 8 и 11 строка раньше стояло res(8 строка) и Tu(11 строка) то что написано в фото у меня вывелось Entry, хотя в другой проге число у меня выводилось, но здесь не хочет, в чём ошибка?
Прикреплённый файлы: PSX_20201212_232423.jpg (642,7 KБ)
Офлайн
D1MoKА что там происходит при нажатии на кнопку? Ты сам не видишь, что ты картинку даже выложил лишь частично?
однако когда нажимаешь на кнопку (btn)
Офлайн
py.user.nextя знаю, что, я фото выложил частично, полностью она отправляться не хотелась, т. к. она слишком большая, ладно щас пришлю так код, просто тогда не было времени скопировать
Офлайн
py.user.nextfrom tkinter import *
Офлайн
D1MoKДа там вообще много всяких ошибок у тебя. Поразительно, что эта программа вообще запустилась.
хотя в другой проге число у меня выводилось, но здесь не хочет, в чём ошибка?
Офлайн
py.user.nextне знаю я по гайду всё делал
Офлайн
https://younglinux.info/tkinter/tkinter.php
Офлайн
Небольшой пример, в котором переменная привязана к полю ввода
>>> 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 Какое-то длинное предложение. >>>
Офлайн
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')
[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='ваш ответ'
Отредактировано AD0DE412 (Дек. 14, 2020 13:15:24)
Офлайн