我的应用程序有点小问题。当我使用文本输入在“已售出”屏幕中输入内容时,它应该写入csv,并在/CUSTOMERS/ALL CUSTOMERS屏幕中显示从该csv读取的内容。但我必须关闭应用程序,然后在输入时再次打开,才能在/CUSTOMERS/ALL CUSTOMERS中显示。因此,我想我必须在写入csv后再次读取它,我尝试再次调用该方法,但它没有真正起作用。它确实再次读取csv,但它只是不显示在屏幕上。我发布了代码。您需要在同一目录中有一个“prodato.csv”文件,以便代码写入和读取。对不起奇怪的名字,我来自塞尔维亚,希望你能通过脚本导航。先谢谢你
以下是主要脚本:
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
from customers import Kupci_sve, Kupci_main, Kupci_pretraga, Duznici
from sold import Prodato
kv = Builder.load_string('''
<MainWindow>:
name: 'main'
GridLayout:
cols:1
GridLayout:
rows:5
Button:
text:"NEW"
Button:
text:"CUSTOMERS"
on_release:
app.root.current = 'kupci_main'
root.manager.transition.direction = 'left'
Button:
text:"SOLD"
on_release:
root.manager.transition.direction = 'left'
app.root.current = 'prodato'
Button:
text: "WORKERS"
Button:
text: "IN STOCK"
''')
class MainWindow(Screen):
pass
class main_app(App):
def build(self):
sm = ScreenManager()
sm.add_widget(MainWindow())
sm.add_widget(Kupci_main())
sm.add_widget(Kupci_pretraga())
sm.add_widget(Kupci_sve())
sm.add_widget(Duznici())
sm.add_widget(Prodato())
return sm
if __name__ == '__main__':
main_app().run()
以下是客户脚本:
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
import csv
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from functools import partial
class Kupci_main(Screen):
pass
class Kupci_sve(Screen):
def __init__(self, **kwargs):
super(Kupci_sve, self).__init__(**kwargs)
self.csv_read()
def button_release(self, index):
print('button_release: ', index)
if index == "MAIN MENU":
self.manager.current = 'main'
self.manager.transition.direction = 'right'
if index != 'MAIN MENU':
for i in glavna_lista:
if index == i[2]:
search_popup(i[0], i[1], i[2], i[3], i[4])
def csv_read(self):
global glavna_lista
self.ids.kupci_sve.data = []
with open('prodato.csv', 'r', encoding='utf-8') as f:
csv_ = csv.reader(f, delimiter=' ')
glavna_lista = []
for row in csv_:
if len(row) != 0:
s = ' '.join(row)
lista = s.split(',')
glavna_lista.append(lista)
glavna_lista = list(reversed(glavna_lista))
content = ['MAIN MENU']
for i in glavna_lista:
if i[2] not in content:
content.append(i[2])
self.ids.kupci_sve.data = [{'text': str(i), "on_release": partial(self.button_release, i)} for i in content]
print(self.ids.kupci_sve.data)
f.close()
def test(self):
self.ids.kupci_sve.data = []
class Kupci_pretraga(Screen):
def __init__(self, **kwargs):
global glavna_lista
super(Kupci_pretraga, self).__init__(**kwargs)
def search_ime_pib(self, ime_pib):
if ime_pib != '':
for i in range(len(glavna_lista)):
if ime_pib.lower() in glavna_lista[i][2].lower():
search_popup(glavna_lista[i][0], glavna_lista[i][1], glavna_lista[i][2],
glavna_lista[i][3], glavna_lista[i][4])
if ime_pib.lower() in glavna_lista[i][3].lower():
search_popup(glavna_lista[i][0], glavna_lista[i][1], glavna_lista[i][2],
glavna_lista[i][3], glavna_lista[i][4])
pass
class Duznici(Screen):
def __init__(self, **kwargs):
super(Duznici, self).__init__(**kwargs)
lista = ['MAIN MENU']
for i in range(len(glavna_lista)):
print(glavna_lista[i][4])
placeno, cena = glavna_lista[i][4].split('/')
placeno, cena = int(placeno), int(cena)
if cena > placeno:
s = ' '.join([glavna_lista[i][0], glavna_lista[i][1], glavna_lista[i][2],
glavna_lista[i][3], glavna_lista[i][4]])
lista.append(s)
self.ids.duznici.data = [{'text': (str(i)).strip('[]'), 'on_release': partial(self.button_release, i)} for i in
lista]
def button_release(self, index):
print('button index: ', index)
if index == 'MAIN MENU':
self.manager.current = 'main'
self.manager.transition.direction = 'right'
if index != 'MAIN MENU':
for i in glavna_lista:
if index == i:
search_popup(i[0], i[1], i[2], i[3], i[4])
pass
class Popup_kupci(FloatLayout):
pass
def zapisi_promenu(datum, sta, ime, pib, odnos_cena_uplaceno, novi_datum, novo_sta, novo_ime, novi_pib, novo_placeno):
if (novi_datum.text != datum and novi_datum.text != '') or (novo_sta.text != sta and novo_sta.text != '') \
or (novo_ime.text != ime and novo_ime.text != '') \
or (novo_placeno.text != odnos_cena_uplaceno and novo_placeno.text != '') \
or (novi_pib.text != pib and novi_pib.text != ''):
f = open('prodato.csv')
csv_ = csv.reader(f, delimiter=' ')
csv_lista = list(csv_)
lista_w = []
for row in reversed(csv_lista):
if len(row) != 0:
string = ' '.join(row)
lista_raw = string.split(',')
if (datum and sta.encode('utf-8') and ime.encode('utf-8') and pib and odnos_cena_uplaceno) in lista_raw:
if novi_datum.text != datum and novi_datum.text != '':
lista_raw[0] = novi_datum.text
if novo_sta.text != sta and novo_sta.text != '':
lista_raw[1] = novo_sta.text
if novo_ime.text != ime and novo_ime.text != '':
lista_raw[2] = novo_ime.text
if novi_pib.text != pib and novi_pib.text != '':
lista_raw[3] = novi_pib.text
if novo_placeno.text != odnos_cena_uplaceno and novo_placeno.text != '':
lista_raw[4] = novo_placeno.text
lista_w.append(lista_raw)
else:
lista_w.append(lista_raw)
f.close()
f = open('prodato.csv', 'w')
csv_writer = csv.writer(f)
for i in lista_w:
print(i)
csv_writer.writerow(i)
f.close()
if novi_datum.text != datum and novi_datum.text != '':
datum = novi_datum.text
if novo_sta.text != sta and novo_sta.text != '':
sta = novo_sta.text
if novo_ime.text != ime and novo_ime.text != '':
ime = novo_ime.text
if novo_placeno.text != odnos_cena_uplaceno and novo_placeno.text != '':
odnos_cena_uplaceno = novo_placeno.text
if novi_pib.text != pib and novi_pib.text != '':
pib = novi_pib.text
def obrisi(datum, sta, ime, pib, odnos_cena_uplaceno):
f = open('prodato.csv')
csv_ = csv.reader(f, delimiter=' ')
csv_lista = list(csv_)
lista_w = []
for row in reversed(csv_lista):
if len(row) != 0:
string = ' '.join(row)
lista_raw = string.split(',')
lista_w.append(lista_raw)
if (datum and sta.encode('utf-8') and ime.encode('utf-8') and pib and odnos_cena_uplaceno) in lista_raw:
lista_w.remove(lista_raw)
f.close()
f = open('prodato.csv', 'w')
csv_writer = csv.writer(f)
for i in lista_w:
print(i)
csv_writer.writerow(i)
f.close()
def promeni(datum, sta, ime, pib, odnos_cena_uplaceno):
show = Popup_kupci()
PopupWind = Popup(title='Change', content=show, size_hint=(None, None), size=(400, 400), auto_dismiss=False)
show.add_widget(Label(text='Date: ', pos_hint={'x': 0.1, 'y': 0.8}, size_hint=(0.3, 0.1)))
show.add_widget(Label(text='What: ', pos_hint={'x': 0.1, 'y': 0.7}, size_hint=(0.3, 0.1)))
show.add_widget(Label(text='Name: ', pos_hint={'x': 0.1, 'y': 0.6}, size_hint=(0.3, 0.1)))
show.add_widget(Label(text='Paid/Value: ', pos_hint={'x': 0.1, 'y': 0.5}, size_hint=(0.3, 0.1)))
show.add_widget(Label(text='Pib: ', pos_hint={'x': 0.1, 'y': 0.4}, size_hint=(0.3, 0.1)))
novi_datum = TextInput(pos_hint={'x': 0.4, 'y': 0.8}, size_hint=(0.4, 0.1), multiline=False)
show.add_widget(novi_datum)
novo_sta = TextInput(pos_hint={'x': 0.4, 'y': 0.7}, size_hint=(0.4, 0.1), multiline=False)
show.add_widget(novo_sta)
novo_ime = TextInput(pos_hint={'x': 0.4, 'y': 0.6}, size_hint=(0.4, 0.1), multiline=False)
show.add_widget(novo_ime)
novo_placeno = TextInput(pos_hint={'x': 0.4, 'y': 0.5}, size_hint=(0.4, 0.1), multiline=False)
show.add_widget(novo_placeno)
novi_pib = TextInput(pos_hint={'x': 0.4, 'y': 0.4}, size_hint=(0.4, 0.1), multiline=False)
show.add_widget(novi_pib)
show.add_widget(Button(text='Make a change', size_hint=(0.4, 0.15), pos_hint={'x': 0.5, 'y': 0.1},
on_press=PopupWind.dismiss, on_release=lambda x: zapisi_promenu(datum, sta, ime, pib,
odnos_cena_uplaceno,
novi_datum, novo_sta,
novo_ime, novi_pib,
novo_placeno)))
show.add_widget(Button(text='Cancel change', size_hint=(0.4, 0.15), pos_hint={'x': 0.1, 'y': 0.1},
on_press=PopupWind.dismiss))
PopupWind.open()
def search_popup(datum, sta, ime, pib, odnos_cena_placeno):
show = Popup_kupci()
PopupWind = Popup(title='Found', content=show, size_hint=(None, None), size=(400, 400), auto_dismiss=False)
show.add_widget(Label(text=('{}\n\n{}\n\n{}\n\n{}\n\n{}'.format(datum, sta, ime, odnos_cena_placeno, pib)),
pos_hint={'x': 0.2, 'y': 0.5},
size_hint=(0.6, 0.2)))
show.add_widget(Button(text='OK', size_hint=(0.4, 0.15), pos_hint={'x': 0.5, 'y': 0.1}, on_press=PopupWind.dismiss))
show.add_widget(Button(text='Change', size_hint=(0.4, 0.15), pos_hint={'x': 0.1, 'y': 0.1},
on_press=PopupWind.dismiss,
on_release=lambda x: promeni(datum, sta, ime, pib, odnos_cena_placeno)))
show.add_widget(
Button(text='Delete', size_hint=(0.4, 0.1), pos_hint={'x': 0.3, 'y': 0}, on_press=PopupWind.dismiss,
on_release=lambda x: obrisi(datum, sta, ime, pib, odnos_cena_placeno)))
PopupWind.open()
return 0
kv = Builder.load_string('''
<Kupci_main>:
name: 'kupci_main'
GridLayout:
cols: 1
rows: 3
Button:
text: 'ALL CUSTOMERS'
on_release:
app.root.current = 'kupci_sve'
Button:
text: 'SEARCH FOR CUSTOMER'
on_release:
app.root.current = 'kupci_pretraga'
Button:
text: "HAVEN'T PAID"
on_release:
app.root.current = 'duznici'
<Kupci_sve>:
name: 'kupci_sve'
RecycleView:
id: kupci_sve
scroll_type: ['bars']
bar_width: 8
viewclass: 'Button'
RecycleBoxLayout:
default_size: (None, 100)
default_size_hint: (1, None)
size_hint_y: None
height: self.minimum_height
orientation: "vertical"
<Kupci_pretraga>:
name: 'kupci_pretraga'
FloatLayout:
TextInput:
id: trazeno
size_hint: (0.5, 0.1)
pos_hint: {"x": 0.25, "y": 0.33}
text: 'input a name or pib...'
on_touch_down:
trazeno.text = ''
Button:
text: 'Search'
size_hint: 0.2, 0.1
pos_hint: {"x": 0.55, "y": 0.23}
on_release:
root.search_ime_pib(trazeno.text)
Button:
text: 'MAIN MENU'
size_hint: 0.2, 0.1
pos_hint: {"x": 0.55, 'y': 0.13}
on_release:
app.root.current = 'main'
root.manager.transition.direction = 'right'
<Duznici>:
name: 'duznici'
RecycleView:
id: duznici
scroll_type: ['bars']
bar_width: 8
viewclass: 'Button'
RecycleBoxLayout:
default_size: (None, 100)
default_size_hint: (1, None)
size_hint_y: None
height: self.minimum_height
orientation: "vertical"
''')
以下是销售脚本:
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.uix.popup import Popup
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
import csv
from customers import Kupci_sve
class Prodato(Screen):
def pressed_btn(self, sta, kome, koliko, kada, pib, placeno, ukupna_cena):
prodato_popup(sta, kome, koliko, kada, pib, placeno, ukupna_cena)
pass
class Popup_(FloatLayout):
pass
kv = Builder.load_string('''
<Prodato>:
name: "prodato"
GridLayout:
rows:7
GridLayout:
cols:2
Label:
text: "what product?"
TextInput:
id: sta
multiline:False
write_tab: False
GridLayout:
cols:2
Label:
text: "to who?"
TextInput:
id: kome
multiline:True
write_tab: False
GridLayout:
cols:2
Label:
text: "how much is sold?"
TextInput:
id: koliko
multiline: False
write_tab: False
GridLayout:
cols:2
Label:
text: "when?"
TextInput:
id:kada
multiline: False
write_tab: False
GridLayout:
cols: 4
Label:
text: 'paid: '
TextInput:
id: placeno
multiline: False
write_tab: False
Label:
text: 'value: '
TextInput:
id: ukupna_cena
multiline: False
write_tab: False
GridLayout:
cols:2
Label:
text: "PIB? "
TextInput:
id:pib
multiline: False
write_tab: False
GridLayout:
cols:2
Button:
text: "MAIN MENU"
on_release:
app.root.current = "main"
root.manager.transition.direction = "right"
sta.text, kome.text, koliko.text, kada.text, pib.text, placeno.text, ukupna_cena.text = '','','','','','',''
Button:
text: "CHECK"
on_release:
root.pressed_btn(sta.text, kome.text, koliko.text, kada.text, pib.text, placeno.text, ukupna_cena.text)
''')
def prodato_popup(sta, kome, koliko, kada, pib, placeno, ukupna_cena):
show = Popup_()
PopupWind = Popup(title='Provera', content=show, size_hint=(None, None), size=(400, 400), auto_dismiss=False)
if sta != "" and kome != "" and koliko != "" and kada != "" and pib != "":
show.add_widget(Label(font_size=17,
text=("What: {}\n\nTo who: {}\n\nHow much: {}\n\nDate: {}\n\nPaid: {}/{}\n\nPib: {}".format(
sta.strip(), kome.strip(),
koliko.strip(), kada.strip(),
placeno.strip(), ukupna_cena.strip(),
pib.strip())),
pos_hint={"x": 0.2, "y": 0.5}, size_hint=(0.6, 0.2)))
potvrdi = Button(text="SUBMIT", size_hint=(0.4, 0.15), pos_hint={'x': 0.5, "y": 0.1},
on_release=PopupWind.dismiss, on_press=lambda x: prodato_csv(sta.upper(), kome.upper(),
koliko, kada, pib,
placeno, ukupna_cena))
potvrdi.bind(on_release=lambda x: Kupci_sve().csv_read())
show.add_widget(potvrdi)
show.add_widget(
Button(text="CANCEL", size_hint=(0.4, 0.15), pos_hint={"x": 0.1, "y": 0.1}, on_release=PopupWind.dismiss))
else:
show.add_widget(Label(font_size=20, text="You need to enter everything.",
pos_hint={"x": 0.2, "y": 0.5}, size_hint=(0.6, 0.2)))
show.add_widget(
Button(text="OK", size_hint=(0.8, 0.3), pos_hint={"x": 0.1, "y": 0.1}, on_release=PopupWind.dismiss))
PopupWind.open()
def prodato_csv(sta, kome, koliko, kada, pib, placeno, ukupna_cena):
with open('prodato.csv', 'a', encoding='utf-8') as f:
csvwriter = csv.writer(f)
lista = [kada, sta, kome, pib, str(placeno) + '/' + str(ukupna_cena)]
csvwriter.writerow(lista) # [kada, sta.encode('utf-8'), koliko, kome.encode('utf-8'), pib]
print('writerow')
f.close()
pass
目前没有回答
相关问题 更多 >
编程相关推荐