Hey all,
I have the following code below.
I am trying to show take the user through an experiment, where the experiment is split into different windows (window 1, then window 2, then the next window etc).
However, when I run the following code, all the windows are appearing at the same time , despite me using the window.close() function (to close one window once the response has been given).
I would be so grateful for a helping hand as to where I might be going wrong!
I have the following code below.
I am trying to show take the user through an experiment, where the experiment is split into different windows (window 1, then window 2, then the next window etc).
However, when I run the following code, all the windows are appearing at the same time , despite me using the window.close() function (to close one window once the response has been given).
I would be so grateful for a helping hand as to where I might be going wrong!
import pandas as pd
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QPixmap
import sys
import random
app = QApplication([])
name = []
age = []
gender = []
education = []
choiceround1 = []
choiceround2 = []
choiceround3 = []
urnpositionrounds = []
window = uic.loadUi("/Users/macbook/Desktop/assignment2file.ui")
window2 = uic.loadUi("/Users/macbook/Desktop/assignment2file2.ui")
window3 = uic.loadUi("/Users/macbook/Desktop/assignment2file3.ui")
window4 = uic.loadUi("/Users/macbook/Desktop/assignment2file4.ui")
window5 = uic.loadUi("/Users/macbook/Desktop/UCL PhD Work/16023114/assignment2file5.ui")
window6 = uic.loadUi("/Users/macbook/Desktop/UCL PhD Work/16023114/assignment2file6.ui")
window7 = uic.loadUi("/Users/macbook/Desktop/UCL PhD Work/16023114/assignment2file7.ui")
window8 = uic.loadUi("/Users/macbook/Desktop/UCL PhD Work/16023114/assignment2file8.ui")
window9 = uic.loadUi("/Users/macbook/Desktop/UCL PhD Work/16023114/assignment2file9.ui")
marbles2random = QPixmap('/Users/macbook/Desktop/2random')
marbles25050 = QPixmap('/Users/macbook/Desktop/25050')
marbles10random = QPixmap('/Users/macbook/Desktop/10random')
marbles105050 = QPixmap('/Users/macbook/Desktop/105050')
marbles100random = QPixmap('/Users/macbook/Desktop/100random')
marbles1005050 = QPixmap('/Users/macbook/Desktop/1005050')
emptydataframe = pd.DataFrame()
j = 0
while (j < 12):
window.show()
windows = [window3]
windows2 = [window4]
def shownewwindow():
window2.show()
window.close()
window.pushButton.clicked.connect(shownewwindow)
window2.labelerror.hide()
#randomly selecting order of conditions (2 vs 10 vs 100 marbles)
selectedwindowindex = random.sample(range(len(windows)),3)
selectedwindow = windows[selectedwindowindex[0]]
selectedwindow2 = windows[selectedwindowindex[1]]
selectedwindow3 = windows[selectedwindowindex[2]]
selectedwindows = [selectedwindow,selectedwindow2,selectedwindow3]
selectedsecondwindow = windows2[selectedwindowindex[0]]
selectedsecondwindow2 = windows2[selectedwindowindex[1]]
selectedsecondwindow3 = windows2[selectedwindowindex[2]]
selectedsecondwindows = [selectedsecondwindow,selectedsecondwindow2,selectedsecondwindow3]
#randomly assigning random vs fixed jar of marbles to left and right urn
allmarblesrandom = [marbles2random,marbles10random,marbles100random]
allmarbles5050 = [marbles25050,marbles105050,marbles1005050]
allmarblesrandomone = allmarblesrandom[selectedwindowindex[0]]
allmarblesrandomtwo = allmarblesrandom[selectedwindowindex[1]]
allmarblesrandomthree = allmarblesrandom[selectedwindowindex[2]]
randommarbles = [allmarblesrandomone,allmarblesrandomtwo,allmarblesrandomthree]
allmarbles5050one = allmarbles5050[selectedwindowindex[0]]
allmarbles5050two = allmarbles5050[selectedwindowindex[1]]
allmarbles5050three = allmarbles5050[selectedwindowindex[2]]
marbles5050 = [allmarbles5050one,allmarbles5050two,allmarbles5050three]
#ensuring that all response boxes have been filled in
def checkText():
if((window2.Name.text()== "") or (window2.Gender.text()== "") or (window2.Age.text()== "") or (window2.Education.text()== "")):
window2.labelerror.setText("One of the boxes has not yet been filled in!")
window2.labelerror.show()
else:
username = window2.Name.text()
name.append(username)
print(name)
userage = window2.Age.text()
age.append(userage)
print(age)
usergender = window2.Gender.text()
gender.append(usergender)
print(gender)
usereducation = window2.Education.text()
education.append(usereducation)
print(education)
window2.labelerror.hide()
window2.close()
window2.submitbutton.clicked.connect(checkText)
#run experiment based on order of randomly-selected conditions (number of marbles in jar)
for i in range(0,len(selectedwindows)):
selectedwindow = selectedwindows[i]
selectedsecondwindow = selectedsecondwindows[i]
selectedwindow.show()
allmarblesrandomone = randommarbles[i]
allmarbles5050one = marbles5050[i]
marblechoices = [allmarblesrandomone,allmarbles5050one]
rightsidechoice = random.choice(marblechoices)
marblechoices.remove(rightsidechoice)
leftsidechoice = random.choice(marblechoices)
def shownewwindow():
if 'random' in str(rightsidechoice):
urnposition = 0
urnpositionrounds.append(urnposition)
selectedsecondwindow.rightlabel.setPixmap(rightsidechoice)
selectedsecondwindow.leftlabel.setPixmap(leftsidechoice)
selectedsecondwindow.show()
selectedwindow.close()
else:
urnposition = 1
urnpositionrounds.append(urnposition)
selectedsecondwindow.rightlabel.setPixmap(leftsidechoice)
selectedsecondwindow.leftlabel.setPixmap(rightsidechoice)
selectedsecondwindow.show()
selectedwindow.close()
selectedwindow3.pushButton.clicked.connect(shownewwindow)
def shownewwindow2():
answer = 0
emptydataframe.iloc[0,i] = answer
print(emptydataframe)
selectedsecondwindow.close()
def shownewwindow3():
answer = 1
emptydataframe.iloc[0,i] = answer
print(emptydataframe)
selectedsecondwindow.close()
selectedsecondwindow.Left.clicked.connect(shownewwindow2)
selectedsecondwindow.Right.clicked.connect(shownewwindow3)
#ending screen
window9.show()
def shownewwindow4():
window9.close()
window9.pushButton.clicked.connect(shownewwindow4)
j = j + 1
app.exec_()
