我的循环行运行一次,然后停止。我真的不明白发生了什么。该程序应该以t中存在的输入量运行,但事实并非如此。 (注意:名称用\ n分隔)
我从字面上想不出一种方法来完成这项工作。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
from kivy.uix.label import Label
import csv
from tempfile import NamedTemporaryFile
import shutil
from kivy.properties import ListProperty
class CLabel(Label):
bgcolor = ListProperty([0,0,0])
class Cp(Screen):
def signin(self):
pop = Popup(title='Custom Hours',
content=Label(text='Hours Added'),
size_hint=(None, None), size=(200, 200))
pop.open()
def noUser(self, t):
content = Label(text='Users: {x} Not Found'.format(x = t))
pop = Popup(title='Custom Hours',
content=content,
size_hint=(None, None), size=(400, 200))
pop.open()
def check_tutor(self, text1):
t = text1.split('\n')
temp = []
tempfile = NamedTemporaryFile(mode='w', delete=False)
name_d = False
sheetrow = 0
with open('D:\\johnp\\kivy_venv\\tsting\\test.csv', 'r') as fh, tempfile:
head = {'Position': 'Position', 'Name': 'Name', 'Grade': 'Grade',
'School': 'School', 'Tutor\'s Phone': 'Tutor\'s Phone',
'Tutor\'s Email': 'Tutor\'s Email', 'Parent\'s Phone': 'Parent\'s Phone',
'Parent\'s Email': 'Parent\'s Email', 'Hours': 'Hours'}
reader = csv.reader(fh)
headers = next(reader)
reader1 = csv.DictReader(fh, fieldnames=headers)
writer = csv.DictWriter(tempfile, fieldnames=headers)
writer.writerow(head)
#this is the part I help on
for item in t:
for row in reader1:
sheetrow += 1
if row['Name'] == item.strip():
name_d = True
try:
row['Hours'] = float(row['Hours']) + 0.5
self.signin()
except ValueError:
invalidForm()
row = {'Position': row['Position'], 'Name': row['Name'], 'Grade': row['Grade'],
'School': row['School'], 'Tutor\'s Phone': row['Tutor\'s Phone'],
'Tutor\'s Email': row['Tutor\'s Email'], 'Parent\'s Phone': row['Parent\'s Phone'],
'Parent\'s Email': row['Parent\'s Email'], 'Hours': row['Hours']}
writer.writerow(row)
if row['Name'] != item.strip():
temp.append(item)
if name_d == False:
self.noUser(temp)
shutil.move(tempfile.name, 'D:\\johnp\\kivy_venv\\tsting\\test.csv')
def invalidForm():
pop = Popup(title='Invalid Form',
content=Label(text='Please fill in all inputs with valid information.'),
size_hint=(None, None), size=(400, 400))
pop.open()
class WindowManager(ScreenManager):
pass
kv = Builder.load_file("my1.kv")
sm = WindowManager()
screens = [Cp(name="cp")]
for screen in screens:
sm.add_widget(screen)
sm.current = "cp"
class MyMainApp(App):
def build(self):
return sm
if __name__ == "__main__":
MyMainApp().run()
<WindowManager>:
Cp:
<Cp>:
name: "cp"
GridLayout:
cols: 1
size: root.width/2, root.height/2
GridLayout:
cols: 2
CLabel:
text: "Enter Names: "
color: 0,0,0,1
canvas.before:
Color:
rgba: 1, 1, 0, 1
Rectangle:
pos: self.pos
size: self.size
TextInput:
id: x
multiline: True
Button:
text: "Add Clean Up Hours"
on_release:
root.check_tutor(x.text)
Button:
text: "Go Back"
on_release:
app.root.current = "other"
root.manager.transition.direction = "right"
Position,Name,Grade,School,Tutor's Phone,Tutor's Email,Parent's Phone,Parent's Email,Hours
Tutor,Bob 1,9,asdasd,123123,sadadds,122112313,3123213213,0.0
Tutor,Bob 2,9,asdasd,123123,sadadds,122112313,3123213213,0.0
Tutor,Bob 3,9,asdasd,123123,sadadds,122112313,3123213213,0.0
编辑:我添加了重现此问题所需的所有必要代码。请帮忙。谢谢。