اذهب إلى المحتوى

السؤال

نشر

السلام عليكم.
هذا الكود فيه مشكلتين:
المشكلة الأولى: 
أريد تغيير النص الثابت في self.wt في كل مرة يتم فيها إرسال إجابة صحيحة لتغيير الحرف الذي يجب كتابته.
المشكلة أن الحرف المطلوب يتغير لكن النص في self.wt لا يتغير, كود التغيير موجود في دالة onsend.
المشكلة الثانية:
الكود self.write.Value="" في الشرط الموجود في دالة onsend لا يقوم بتفريغ مربع الكتابة.
فما الحل للمشكلتين؟
الكود:
```

import wx
import winsound

enletters= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

class len(wx.Frame):
    def __init__(self, parent):
        super(len,self).__init__(parent,-1, title= 'النظام التعليمي, الأحرف الإنجليزية المرتبة')
        self.p = wx.Panel(self,-1)
        self.lettern= (0)
        self.letter= (enletters[self.lettern])
        wx.StaticText(self.p, -1, "الإجابات: ")
        self.verify = wx.TextCtrl(self.p, -1, style=wx.TE_READONLY+wx.TE_MULTILINE+wx.HSCROLL)

        self.wt= wx.StaticText(self.p, -1, f"اكتب حرف  {self.letter}  ")
        self.write = wx.TextCtrl(self.p, -1)
        self.write.SetFocus()

        self.send= wx.Button(self.p, -1, "إرسال الإجابة")
        self.send.Bind(wx.EVT_BUTTON, self.onsend)

        self.Show()

    def onsend(self, event):
        self.result= self.write.GetValue()
        if self.result == self.letter:
            self.verify.write(f'''صحيح {self.letter}
''')
            winsound.PlaySound('data\yes.wav', 1)
            self.lettern= self.lettern+1
            self.letter= (enletters[self.lettern])
            self.wt= wx.StaticText(self.p, -1, f"اكتب حرف  {self.letter}  ")
            self.write.SetFocus()
            self.write.Value=""

app = wx.App()
len(None)
app.MainLoop()


```

Recommended Posts

  • 1
نشر (معدل)

لحل المشكلة الأولى، يمكن إضافة الأمر self.wt.SetLabel(f"اكتب حرف {self.letter} ") في دالة 'onsend' بعد تعديل الحرف الذي يجب كتابته.
لحل المشكلة الثانية، يمكن استخدام الأمر ' self.write.SetValue("") ' بدلاً من ' self.write.Value="" ' لتفريغ مربع الكتابة.

الكود بعد التعديل:
 

import wx
import winsound

enletters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

class len(wx.Frame):
    def __init__(self, parent):
        super(len, self).__init__(parent, -1, title='النظام التعليمي, الأحرف الإنجليزية المرتبة')
        self.p = wx.Panel(self, -1)
        self.lettern = 0
        self.letter = enletters[self.lettern]
        wx.StaticText(self.p, -1, "الإجابات: ")
        self.verify = wx.TextCtrl(self.p, -1, style=wx.TE_READONLY + wx.TE_MULTILINE + wx.HSCROLL)

        self.prompt = wx.StaticText(self.p, -1, f"اكتب حرف  {self.letter}  ")
        self.write = wx.TextCtrl(self.p, -1)
        self.write.SetFocus()

        self.send = wx.Button(self.p, -1, "إرسال الإجابة")
        self.send.Bind(wx.EVT_BUTTON, self.onsend)

        self.Show()

    def onsend(self, event):
        answer = self.write.GetValue()
        if answer == self.letter:
            self.verify.write(f'صحيح {self.letter}\n')
            winsound.PlaySound('data\\yes.wav', winsound.SND_FILENAME)
            self.letter_index += 1
            if self.lettern >= len(enletters):
                self.lettern = 0
            self.letter = enletters[self.lettern]
            self.prompt.SetLabel(f"اكتب حرف  {self.letter}  ")
            self.write.SetFocus()
            self.write.SetValue("")

app = wx.App()
len(None)
app.MainLoop()

 

تم التعديل في بواسطة Muhammed Nasser

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...