2015-02-17 2 views
-1

Итак, я создал базу данных в sqlite и использовал tkinter в python. Мне удалось создать окно, которое позволит пользователю нажимать кнопку, которая будет произвольно выбирать из этого списка, однако список не генерируется случайным образом и только выбирает конечный элемент списка из базы данных. Это мой код до сих пор .. любая помощь?Произвольно сгенерируйте из базы данных

from tkinter import 
import random 
import sqlite3 
conn = sqlite3.connect('cashflow.db')#creates database file 
c = conn.cursor() 
def tableCreate(): #creates the multiplechoice table 
    c.execute("CREATE TABLE multiplechoice(Equation VARCHAR, Answer VARCHAR)") 
    conn.commit() 


def dataEntry(): #Enters the equations in the table 
c.execute("INSERT INTO multiplechoice VALUES('average selling price x goods sold','sales revenue')") 
c.execute("INSERT INTO multiplechoice VALUES('price x number of customers','revenue')") 
c.execute("INSERT INTO multiplechoice VALUES('total revenue of company/total industry revenue x 100','market share percantage')") 
c.execute("INSERT INTO multiplechoice VALUES('fixed cost/selling price - variable costs','break even')") 
c.execute("INSERT INTO multiplechoice VALUES('sales income- variable costs','total contibution')") 
c.execute("INSERT INTO multiplechoice VALUES('sales income - break even output','margin of safety')") 
c.execute("INSERT INTO multiplechoice VALUES('change in market share/original market size x 100','market growth')") 
c.execute("INSERT INTO multiplechoice VALUES('net profit/revenue x 100','net profit margin')") 
c.execute("INSERT INTO multiplechoice VALUES('net profit/capital employed x 100','Retrn of capital employed')") 
#c.execute("UPDATE multiplechoice") 
conn.commit() 

c.execute('SELECT Equation FROM multiplechoice') 
count = 0 
for col in c : 
    print (col) 
    count = count + 1 
print (count, 'Columns.') 
c.close() 

import random 

def DrawList(): 
     random.shuffle(col) 
     plist = col 
     button['bg'] = 'blue' 
     button['fg'] = 'white' 

     for item in plist: 
       listbox.insert(0,item); 


root = Tk()      #This creates a window, but it won't show up 
root.title("Multiple choice") 
root.geometry("450x250+100+100") 
labeltext = StringVar() 
labeltext.set(" Question one is: ") 
label3= Label(root, textvariable = labeltext,) 
listbox = Listbox(root) 
button = Button(root,text = "Randomise",command = DrawList) 

button.pack() 
listbox.pack()     #this tells the listbox to come out 
root.mainloop()     #This command will tell the window come out 

=========================================== =======================================

ответ

1

Из-за вашей петли for в вашем коде col назначен как ваш последний элемент. Я имею в виду,

lst = ["a","b","c","d"] 
for x in lst: 
    pass 
print (x) 
>>> d 

Кроме того, так как ваш col только элемент, shuffle не будет делать anyting.

Вы можете создать новый список, а затем добавить все элементы к нему и перетасовать его.

new_list = [] #here is your new list. also you can create it by list comp. 
count = 0 
for col in c : 
    print (col) 
    new_list.append(col) 
    count = count + 1 
print (count, 'Columns.') 
c.close() 

def DrawList(): 
     random.shuffle(new_list) 
     button['bg'] = 'blue' 
     button['fg'] = 'white' 

     for item in new_list: 
       listbox.insert(0,item) 
+0

Его работа была благодарна! – kose

Смежные вопросы